JavaScript表达式中最简单的一类表达式就是常量,变量名也是一种简单的表达式,将简单的表达式组合成复杂表达式最常用的方法就是使用运算符。JavaScript表达式的类型多种多样,下面逐个说明。
1、原始表达式
原始表达式是表达式的最小单位,包含常量或直接量、关键字和变量。
2、对象和数组的初始化表达式
对象和数组的初始化表达式实际上是一个新创建的对象和数组。数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的,逗号之间的元素可以省略,省略的空位会填充值undefined,结尾处可以留下单个逗号,但逗号后面并不会创建一个新的值为undefined的元素。对象初始化表达式和数组初始化表达式非常类似,只是方括号被花括号代替,并且每个元素都包含了属性名、冒号和属性值。对象和数组的初始化表达式都支持嵌套,其元素可以是对象或数组。
3、函数定义表达式
函数定义表达式定义一个JavaScript函数,表达式的值就是这个新定义的函数,一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分隔的列表,列表含有0个或多个参数名,然后再跟随一个由花括号包裹的JavaScript代码段。
4、属性访问表达式
属性访问表达式运算得到一个对象属性或一个数组元素的值。JavaScript为属性访问定义了两种语法,第一种语法是一个表达式后跟随一个句点和标识符,表达式指定对象,标识符则指定需要访问的属性的名称。第二种语法是使用方括号,方括号是另外一个表达式,这种方法适用于对象和数组,第二个表达式指定要访问的属性的名称或者代表要访问数组元素的索引。
5、调用表达式
JavaScript的调用表达式是一种调用函数或方法的语法表示。它以一个函数表达式开始,这个函数表达式指代了要调用的函数,函数表达式后跟随一对圆括号,括号内是一个以逗号隔开的的参数列表,参数可以有0个也可有多个。
6、对象创建表达式
对象创建表达式创建一个对象并调用构造函数初始化新对象的属性,与函数调用表达式非常类似,只是对象创建表达式之前多了一个关键字new。如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么这对空圆括号是可以省略掉的。
7、运算符
同其它编程语言如C/C++一样,JavaScript的运算符也包括一元运算符、二元运算符和三元运算符,使用运算符要考虑优先级和结合性,以及左值、右值。JavaScript中除了常见的符号运算符外,还有一些关键字运算符,如delete删除属性、typeof检测操作数类型、void返回undefined值、instanceof测试对象类、in测试属性是否存在等。运算符可用于算术表达式、比较表达式、逻辑表达式、赋值表达式等。
+是一个有意思的运算符,除了数字加法之外,还可用于字符串连接,用作一元运算符时把操作数转换为数字或者NaN。位运算符会将NaN、Infinity和-Infinity都转换为0。右移分为带符号右移>>和无符号右移>>>。判等运算符除了==和!=之外,还有===和!==,表示恒等判断。delete是一元操作符,它用来删除对象属性或者数组属性,然而并不是所有的属性都是可以删除的,一些内置核心和客户端属性是不能删除的,用户通过var语句声明的变量不能删除,同样通过function语句定义的函数和函数参数也不能删除。逗号运算符时二元运算符,它的操作数可以是任意类型,它首先计算左操作数,然后计算右操作数,最后返回右操作数的值。
8、eval()
eval()只有一个参数。如果传入的参数不是字符串,它直接返回这个参数。如果参数是字符串,他会把字符串当成JavaScript代码进行编译,如果编译失败则抛出一个语法错误异常。如果编译成功,则开始执行这段代码,并返回字符串的最后一个表达式或语句的值,如果最后一个表达式或语句没有值,则最终返回undefined。如果字符串抛出一个异常,这个异常将把该调用传递给eval()。关于eval()最重要的是,它使用了调用它的变量作用域环境,也就是说,它查找变量的值和定义新变量和函数的操作和局部作用域中的代码完全一样。
版权声明:本文为博主原创文章,未经博主允许不得转载。