- 表达式:包括常量,变量,数组访问表达式 data = [1, 2, 3]。
- 运算符是将简单表达式组成复杂表达式的常用方法。
- 原始表达式:常量或直接量,关键字和变量。
- 对象,数组的初始化表达式实际就是新创建的对象和数组,这些初始化表达式有时也叫”对象(数组)直接量“,数组初始化表达式中的元素初始化表达式也可以是数组初始化表达式(也就是嵌套)例子: var matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];数组直接量中元素可省略 即:var sparseArray = [1,,,,5];
- 对象初始化表达式类似数组: var p = {x:2, y:3};也可以嵌套如下:
-
var rectangle = { upperLeft:{x:2, y:2}, lowerRight:{x:4, y:5} }
- 属性访问表达式运算可以得到一个对象属性或一个数组元素的值,两种语法:expression.identifier和expression[expression]例子:
var o = {x:1, y:{z:3}}; var a = [o, 4, [5, 6]]; o.x //1 o.y.z //3 o["x"] //1 a[1] //4
注意:identifier只用于要访问的属性名是合法的标示符,如果是保留字,包含空格和标点符号或一个数字(数组)则用“[]”. - 运算符:一元、二元、三元(1、2、3个操作数)
- 左值:表达时只能出现在赋值运算符左侧,javascript中变量,对象属性,数组均是左值。 注意:属性访问表达式和调用表达式优先于运算符。eg:typeof my.function[x](y).这里typeof最后执行。
- “+”运算符,“1” + 2 //"12" 1 + {} //"1[object Objec]" 下面两个注意运算顺序: 1 + 2 + “blind mice”; //"3 blind mice" 1 + (2 + "blind mice"); //"12 blind mice"
- ++直接看代码:(--同理)
var i = 1, j = ++i; // j,i 都是2 var i = 1, j = i++; //i = 2, j = 1
书上说++i在前为前增量,i加1,并返回计算后的值.而i++为后增量,i加1,但返回为增加的值(原值)。我的理解是:++是右结合的,之所以++i返回计算后的值因为i在右边,被带入计算中了,而i++呢,i在左边,没有执行到这里,所以返回为增加的值。
- 对象转换首先用valueOf(),然后在考虑toString(),所有大写的ASCII字母<小写的字母。
- in运算符。 左操作数为字符串,右操作数为一个对象。eg: var point = {x:1, y:2}; "x" in point //true "z" in point //false
- instanceof: 左为对象(实例),右为表示对象的类(函数)。 eg: var d = new Date(); d instanceof Date //true 所有对象都是Object 的实例。
- 假值:false,null,undefined.0 -0,NaN 和“”。其他值包括对象都是真值。2015-07-2721:31:02