JS表达式
一、概述
- JS表达式分为两种,其一基本表达式,其二复杂表达式。
二、基本表达式
- 基本表达式是表达式的最小单位,不包含其它表达式。
- 基本表达式分为字面量、关键字和变量,
- 具体划分为this关键字、标识符引用、字面量引用、数组初始化、对象初始化和分组表达式。
this关键字和标识符
this; //返回当前对象
a; //返回变量a的值
b; //返回变量b的值
字面量引用
- 字面量又叫直接量,指程序中能直接使用的数据值。
null;
undefined;
//布尔值
true;
false;
//数字
1;
//字符串
'abc';
/pattern/;
数组,对象初始化
- 数组和对象的初始化实际上是一个以字面量方式描述的初始化过程。这两个初始化表达式有时称作数组字面量和对象字面量。
//数组
[];
[2, 3, 4];
//对象
{};
{a:1};
分组表达式
- 分组表达式是指括号,用于重写运算符的优先级。
三、复杂表达式
- 复杂表达式由原始表达式和操作符组合而成,
- 分为三类,其一属性访问表达式,其二对象创建表达式,其三函数表达式。
属性访问表达式
- 属性访问表达式可以得到对象的属性值或数组元素的值,
- JS为属性访问定义了两种写法。
- 表达式后跟随一个句点和标识符,表达式指定对象,标识符则指定需要访问的属性名称。
- 使用方括号,方括号内是另一个表达式(这种方法适用于对象和数组),方括号内的表达式指定要访问的属性名称或要访问的数组元素的索引。
var obj = { a : 1};
console.log(obj.a); //1
console.log(obj[a]); //1
var arr = [1, 2, 3];
console.log(arr[0]); //1
-
句点和中括号之前的表达式会首先计算,如果计算结果是null或undefined,表达式会抛出异常,因为这两个值不能包含任意属性。如果计算结果不是对象,JS会自动将其转换为对象。
-
如果对象表达式后跟随一对方括号,则会计算方括号内的表达式的值并将其转换为字符串。不论哪种情况,如果命名的属性不存在,整个属性访问表达式的返回值为undefined。
对象创建表达式
- 创建一个对象,并调用一个函数初始化新对象的属性。
new Object();
- 若对象创建表达式不需要传入任何参数给构造函数,则圆括号可以省略。
函数表达式
- 函数表达式分为函数定义表达式和函数调用表达式。
- 函数定义表达式定义一个新的JS函数,表达式的值是这个新定义的函数。
var fn = function(){ }
- 函数调用表达式是一种调用或执行函数或方法的语法表示。如果圆括号前的表达式是一个属性访问表达式,则这个调用称为方法调用。
f(0);
Math.max(x,y,z);
a.sort();