《JavaScript权威指南》读书笔记(7)-运算符
JavaScript 运算符
JavaScript中的运算符大多数都没有什么值得深究的地方,这里只想记录一下比较运算符以及一些C中没有的一些运算符。
比较运算符
字符串比较按照Unicode字符的引索顺序进行比较。
只有数字和字符串才能真正执行比较操作,因此其他的操作数都将进行类型转换。
- 如果操作数为对象,则先调用valueOf方法,若返回一个原始值,则使用这个原始值,否则,使用toString方法的转换结果来进行比较。
in运算符
字符串 in 对象
//左值为一个字符串,右值为一个对象。eg.
"x" in point //判断x元素是否在point里
instanceof运算符
对象 in 类
//左值为一个对象,右值为一个类
d instanceof Date; //判断对象d是否为类Date的一个实例
eval
eval是一个函数,但JavaScript又对eval进行了一些限制,使其不完全是一个函数,而有些像是一个运算符。eval()只有一个参数。如果传入的参数不是字符串,会直接返回这个参数,如果参数是字符串,会把字符串当成JavaScript代码进行编译,如果编译失败则抛出语法错误,如果编译成功就会执行这段代码并返回字符串中的最后一个表达式或语句的值。
eval在多个ECMAScript标准中都不甚相同,并且eval在实际开发中并不常用,所以就不深究了。
的确是编译。JavaScript是解释性语言,但同样有JIT的东西,来做JavaScript的即时编译。我也不甚了解,详情问搜索引擎。
delete运算符
用来删除对象属性或者数组元素
delete o.x
void运算符
void是一元运算符,它出现在操作数之前,操作数可以是任意类型。这个运算符并不是
经常使用:操作数会照常计算,但忽略计算结果并返回undefined。由于void会忽略操作
数的值,因此在操作数具有副作用的时候使用void来让程序更具语义。
这个运算符最常用在客户端的URL—javascript:URL中,在URL中可以写带有副作用的表达式,而void则让浏览器不必显示这个表达式的计算结果。例如,经常在HTML代码中的标签里使用void运算符:
<a href="javascript:void window.open();">打开一个新窗口</a>
通过给的onclick绑定一个亊件处理程序要比在href中写“javascript:URL”要更加清晰,当然,这样的话void操作符就可有可无了。

浙公网安备 33010602011771号