《Javascript权威指南》表达式和运算符

如果表达式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();"> 打开新窗口

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。