JavaScript表达式

表达式是一个可以被求值并产生一个值的JavaScript短语(Phrase)。

主表达式(primary expression)

独立存在,不再包含更简单表达式的表达式为主表达式,为最简单的表达式。

常量或字面量值

123; 
3.14; // 数值字面量
"hello js"; //字符串字面量
/pattern/; //正则表达式字面量

语言关键字、保留字

true;
false;
null;
this; //上下文

变量、常量或全局对象属性的引用

i; // 求值为变量i的值
temp; //求值为变量temp的值
PI;//
undefined; //全局对象undefined属性的值

对象和数组初始化程序

这些初始化程序表达式有时被称为对象字面量或数组字面量。但与真正的字面量不同,它们不是主表达式,因为他们包含用于指定属性或元素值的子表达式(即不是最简单的表达式)。

数组初始化

[]; //空数组
[1,2,'3',1+2+3,false];

let matrix = [[1],[1,2],[1,2,3]];
let sparseArray = [1,,,,6];

let undefArray = [1,,,4,];
console.log(undefArray[4]); // undefined

对象初始化

let o = {};//对象
let obj = {a: 1,b:2};
o.a = 1; o.b = 2;//赋值

//ES6对象字面量嵌套
let inObj = {
  upperLeft = {x: 2,y: 4},
    upperRight = {x: 3,y: 5}
};

函数定义表达式

某种意义上,函数定义表达式也是"函数字面量",因为函数也是对象。

let square = function(x){return x*x};

属性访问表达式

属性访问表达式求值为对象属性或数组元素的值。JS定义以下两种访问属性的语法:

  • expression.identifier
  • expression[expression]

无论哪种访问表达式,前面的expression都会先进行求值,如果expression求值为null或undefined,表达式抛出TypeError错误

let o = {x: 1,y: 2};
o.x;// x => 1
o.y;// y => 2

o["x"]; //x => 1 
o["y"]; //y => 2

条件式属性访问(ES2020)

...

调用表达式

调用表达式是JavaScript中调用(或执行)函数或方法的一种语法。

function f(x){console.log(x)};
f(0);
Math.max(x,y,z);
n.sort();

条件式调用