如果表达式x中的一个变量自增1,这个变量在表达式z中使用,那么实际上是先计算出了x的值再计算z的值
a=1;
求 b=(a++)+a;
1)计算b
2)计算a++(假设为c)
3)计算a
4)计算c+a 5
)将c+a赋值给b
在a++的结果依然为1,即c为1,然后a立即增1,执行3)时a已经是2,因此b为3
+运算符
如果其中一个操作数是对象,则日期对象通过 toString() 方法执行转换,其他对象通过 valueOf() 方法转换(如果 valueOf()返回一个原始值)。由于多数对象不具备可用的 valueOf()方法,因此它们通过 toString()方法转换。 进行对象到原始值的转换后,如果其中一个操作数是字符串,另一个操作数也转换为字符串 否则,两个操作数都转换为数字(或NaN)
"1" + 2 = "12";
1 + {} = 1[object Object]; //对象转换为字符串
true + true = 2;
2 + null = 2;
2 + undefined = NaN; //undefined转换为NaN
in
左操作数是字符串或可用转换为字符串,右操作数是对象。如果右侧的对象拥有一个名为左操作数值的属性名,则返回true
instanceof
左操作数是对象,右操作数标识对象的类。如果左侧对象是右侧类的实例,则返回true。
typeof
x typeof(x)
undefined "undefined"
null "object"
true或false "boolean"
任意数字或NaN "number"
任意字符串 "string"
任意函数 "function"
任意内置对象(非函数) "object"
任意宿主对象 编译器各自实现的字符串
delete
删除对象属性或数组元素
var a = [1,2,3];
delete a[1];
alert(a.length) //3 删除了元素并不改变数组长度
void
操作数照常计算,但忽略结果并返回undefined 最常用在客户端的URL——javascript:URL中,在URL中可以写带有副作用的表达式,void 让浏览器不必显示这个表达式的结果。
<a href="javascript:void window.open();"> 打开新窗口