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();