表达式

本课程目的:

  1. 了解javascript中各种表达式
  2. 理解并等能使用javascript中各种运算符

原始表达式

原始表达式是最简单的表达式。它是表达式的最小单元。

Javascript中的原始表达式有:常量、直接量、关键字、变量。

1
2
3
4
5
6
1.23 //数字直接量
"hello" //字符串直接量
true //保留字,布尔值
null //保留字,表示空值
this //保留字,返回当前对象
i //变量,表示i值

数组初始化表达式

数组初始化表达式(也称数组直接量),它实际上是一个新创建的数组。

数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成。

1
2
3
4
[] //空数组
[1 + 2,3 + 4] //[3.7]
[[1,2,3],[4,5,6]] //表达式可嵌套,这里相当于二维数组
[1,,,,,3] //逗号间元素可以省略,逗号间空位将填充为undefined

注意,元素列表最后一个元素后可以留单个逗号,但是不会创建一个值为undefined的元素。即会忽略最后一个空位。

1
2
3
4
5
6
7
var a = [1,];
alert('a数组的长度是:' + a.length); //a数组的长度是:1
var b = [1,,];
alert('b数组的长度是:' + b.length + ';b数组的第二个元素是:'+b[1]);
//b数组的长度是:2;b数组的第二个元素是:undefined
//b数组列表中两个逗号间的空位是有被创建元素的,只是为赋值,为undefined。
//而第二个逗号后面的空位,被忽略,数组长度为2

对象初始化表达式

对象初始化表达式(也称对象直接量),它实际上是一个新创建的对象。

对象初始化表达式是通过一对花括号和其内由逗号隔开的值名对列表构成。

1
2
3
4
5
6
7
8
var p = {} //空对象
var q = {x:1,y:2} //有两个属性的对象
var o = {dot1:{x:1,y:3},dot2:{x:4,y:6}} //对象直接量也可嵌套
var side = 1;
var square = {
    'upperLeft':{x:q.x,y:q.y}, //对象中的属性名称可以是字符串
    'lowerRight':{x:q.x + side,y:q.y + side} //属性值也可以是表达式
};

函数定义表达式

函数定义表达式,在某种意义上也可以称为函数直接量。

一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分隔的列表,列表含有0个或多个标示符表示参数,然后再跟随一个由花括号包裹的javascript代码段。

1
2
3
var square = function(x){
    return x * x;
}

属性访问表达式

属性定义表达式用于获得属性或数组元素的值。

有两种写法:

1
2
expression.identifier //expression用于指定对象,identifier用于指定需要访问的属性名称
expression[expression] //表达式指定要访问的属性名称或代表要访问数组元素的索引
1
2
3
4
5
6
7
8
var o = {x:1,y:{z:3}}; //创建一个对象,有两个属性,其中属性y的值也是一个对象,有一个属性z
var a = [o,4,[5,6]]; //创建一个数组,第一个值为一个对象,第三个值是另一个数组
alert(o.x); //1 ,对象o的x属性值
alert(o.y.z); //3 ,对象o的y属性,它的z属性值
alert(o['x']); //1 ,对象o的x属性值
alert(a[1]); //4 ,数组a中索引为1的元素
alert(a[2]['1']); //6 ,数组a中索引为2的元素,它的索引为1的元素
alert(a[0].x); //1 ,数组a中索引为0的元素,它的x属性

调用表达式

调用表达式即调用函数或方法的语句。

1
2
3
f(0); //f是一个函数,给它传递一个值为0的参数
Math.max(x,y,z) //Math.max是一个求最大值的函数,其中x,y,z是传入的参数
a.sort() //是一个没有参数的排序函数

对象创建表达式

对象创建表达式用来创建一个对象并调用一个函数(即构造函数)初始化新创建的对象。

对象创建表达式用使用new关键字来初始化一个对象实例。

1
2
3
4
new Array(); //创建一个数组对象
new Object(); //创建一个对象
new Point(2,3); //创建一个Point对象实例
new Date; //如果构造函数不需要任何参数,可以省略圆括号,但是不推荐

上一节:类型转换

下一节:运算符