表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果。程序中常用量是最简单的一类表达式就是变量。变量名也是一种简单的表达式,它的值就是赋值给变量的值。
复杂的表达式是由简单的表达式组成的。比如数组访问表达式是由一个表示数组的表达式,方括号、一个整数表达式构成。它们所组成新的表达式运算结果是该数组特定位置的元素值。同样的函
数调用表达式由一个表示函数对象的表达式和0个多个参数表达式构成。将简单表达式组成复杂表达式最常用的方法就是运算符。
本章(本文)将讲解所有javascript运算符。同时也讲解不涉及运算符的表达式(比如访问数组元素和函数调用),其语法和编程风格和c语言都很相似。
1.元素表达式
最简单的表达式是“原始表达式”,原始表达式是表达式的最小的单位--它们不包含其他表达式。javascript中的原始表达式包含常量或直接量。关键字和变量。
直接量是直接在程序中出现的常数值。它们看起来像:
1.23 //数字直接量 "hello" //字符串直接量 /pattern/ //正则表达式直接量
javascript中的一些保留字构成了原始表达式
true //布尔值:真 false //假 null //返回一个值:空 this //返回"当前"对象
通过第三章的学习,和其它关键字不同,this并不是一个常量,他在程序的不同地方返回的值也不相同。this关键字经常在面向对象编程中出现。this返回方格方法的对象。
最后,第三种原始表达式是变量
i //返回变量i的值 sum //返回sum的值 undefined //是全局变量,和null不同,它不是一个关键字
2.对象和数组的初始化表达式。
对象和数组初始化实际上是新创建的对象和数组,这些初始化的表达式有时候叫做“对象直接量”和“数组直接量”。然而和布尔直接量不同,他们不是原始表达式,因为他们所包含的成员或者元素都子表达式。
数组的初始化表达式语法非常简单,我们以下开始
数组的初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的,初始化结果是一个新创建的数组。数组的元素是逗号分隔表达式的值。
[] //一个空数组;[]内留空即表示该数组没有任何元素 [1+2,3+4] //有两个元素的数组,第一个3,第二个是7
数组初始化表达式中的元素初始化表达式可以是数组初始化表达式。也就是说表达式是可以嵌套的
var mat = [[1,2,3],[4,5,6],[7,8,9]];
数组直接量中列表之间的元素可以省略,空位就会填充undefined.例如下面:
var a=[1,,,,5]
其中4个元素是undefined.数组直接量的结尾处留下逗号,这时不会创建一个新的值为undefined的元素。
对象初始化表达式和数组初始化表达式非常相似,只是方括号被花括号代替。并每个字表达式包含一个属性名和非冒号作为前缀。
var p = {x: 2.1,y: -3} //一个拥有两个属性成员的对象 var q = {}; //空对象 q.x=2.1;q.y=-3; //q的属性成员和p的一样
对象直接量也可以嵌套,比如
var anh = {left:{x:2,y:3}, right:{x:4,y:5}}
javascript在计算对象初始化表达式的值时候,对象表达式都会各自计算一次,并且他们不必包含常数值:它们可以是任意javascript表达式。同样,对象直接量中属性的名称可以是字符串而不是标识符。(在在那行只能使用保留字或一些非法标识符作为属性名的时候非常有用)
var side = 1; var square = {"left":{x:p.x,y:p.y}, ‘right‘:{x:p.x+side,y:p.y+side}}
第6 7章还会再次讨论对象和数组的初始化表达式。
3.函数表达式
(未完待续)