深究js(四)——表达式

来源:互联网 发布:js输入框新增span 编辑:程序博客网 时间:2024/06/06 08:32

    表达式是JavaScript中的一个短语,JavaScript解释器会将其计算出一个结果。表达式中分为原始表达式和复杂表达式,原始表达式是表达式中最简单的表达式,而复杂表达式是通过操作符来连接多个原始表达式。下面将详细讲解比较常见的几个表达式。


一、原始表达式

    JavaScript的表达式中最简单的是原始表达式。原始表达式是表达式的最小单位,即不再包含其他表达式。在JavaScript中,原始表达式包含常量或直接量、关键字和变量。常见的直接量如数值和字符串,常见的关键字如true、false、null和this等等。


二、对象和数组的初始化表达式

    对象和数组的初始化表达式有时称做“对象直接量”和“数组直接量”,实际上是一个新创建的对象和数组。但是他们不像上面的直接量,他们不是原始表达式,因为它们所包含的成员或者元素都是子表达式。数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的,初始化的结果是创建一个新的数组。数组的元素是逗号分隔的表达式的值。简单的如:

[][1, 2]
    数组也可以嵌套,如:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    在数组里面,数组直接量中的列表逗号之间的元素可以省略,省略的空位的默认值是underfined,如:

[1,,,5]
    数组直接量的元素列表结尾处可以留下单个逗号,这个时候不会创建一个新元素。对象的初始化表达式和数组的类似,只是由方括号改为花括号,并且每个子表达式都包含一个属性名和一个冒号作为前缀,冒号后面跟着值。如:

var a = {    x : 'a',    y : 'b'}
    对象也可以嵌套,如:

var a = {    a : {        x : 1,        y : 2    },    b : {        x : 1,        y : 2    }}
    对象里面的属性名可以是字符串,如:

var a = {    'a' : {        x : 1,        y : 2    },    'b' : {        x : 1,        y : 2    }}

三、函数定义表达式

    函数定义表达式定义一个JavaScript函数,表达式的值是这个新定义的函数,从某种意义上讲,函数定义表达式可称为“函数直接量”。典型的函数定义表达式包含关键字function,后面有一个括号,括号内可填入多个参数名,然后由一对花括号来包裹着代码块,如:

function foo(a) {    return a}

四、属性访问表达式

    属性访问表达式得到的是一个对象属性或者数组元素的值,在JavaScript中,属性访问有两种方法,一种是用“.”,另一种是用“[]”,如:

var a = {    x : 'a',    y : 'b'}alert(a.x)alert(a['x'])
    第一种方法需要知道该对象里面的某个属性的名称,第二种方法需要知道该对象里面某个属性的名称或者数组元素的索引。这两个方法看似相同,其实有用法上的不同。第一种方法只能用于对象里面的属性的名称要合法,即不能和保留字重名,属性名也不能包含空格和其他标点符号,而第二种方法可以适用这种情况下。当属性名是通过运算得出的值而不是固定值的时候,也是只能用第二种方法。

    无论使用哪种方式,在“.”和“[]”之前的表达式都先进行计算,如果结果是null或者underfined,则会抛出一个类型异常的错误;如果不是对象,则将其转换成对象。如果对象表达式后跟随着句点和标识符,则会查找由这个标识符所指定的属性值并返回;如果是跟随一对方括号,则将方括号内的值转换为字符串。但是无论哪种情况,如果命名属性不存在,则会返回underfined。


五、对象创建表达式

    对象创建表达式创建一个对象并调用一个构造函数初始化新对象的属性,这个方法和函数调用表达式相似,只不过多了个new。如:var a = new Object()。当这个表达式里不需要传人任何参数给构造函数的话,可以省略掉括号。如:var a = new Object


六、其他表达式

    除了上述的这几个表达式外,还有算术表达式、关系表达式、逻辑表达式和赋值表达式等等。算术表达式里的运算符基本上用到算术运算符,通过这些运算符来对操作数进行算术操作。

    关系表达式通过“<”、“>”和“=”等运算符用来测试两个操作数之间的关系,根据关系是否存在而返回真或假。

    逻辑表达式通过逻辑运算符(||、&&、!之类的)对操作数进行布尔算术运算,通常与关系表达式一起用,组成一个比较复杂的表达式。

    赋值表达式是通过等于号来给变量或者属性赋值。我会在后面一章详细的讲有关的运算符,在这里先做个铺垫。

原创粉丝点击