JS第4章——表达式和运算符
一、原始表达式
二、对象和数组的初始化表达式
三、函数定义表达式
四、属性访问表达式
五、调用表达式
六、对象创建表达式
七、运算符
八、算术表达式
九、关系表达式
1、相等符和不相等符
相等运算符:==,===
不相等运算符:!=,!==
严格相等运算符===
运算过程:首先计算其操作数的值,然后再比较这两个值,比较过程中没有任何的类型转换。
不等的情况:
(1) 如果两个值类型不同,则它们不相等
(2) 如果两个值都是null或都是undefined,则它们不相等
(3) 如果其中一个值是NaN,或者两个值都是NaN,则它们不相等
相等的情况:
(1) 如果两个值都是布尔值true或者布尔值false,则它们相等
(2) 如果两个值都是数字且数值相等,则它们相等。(注:0和-0也相等)
(3) 如果两个值是字符串且长度和内容均相同时,则它们相等
(4) 如果两个引用值指向同一个对象、数组or函数,则它们相等
一般相等运算符==
运算过程:和恒等运算符相似,但一般相等运算符的比较并不严格。如果两个操作数不是同一类型,那么一般的相等运算符会尝试进行一些类型转换,然后进行比较
(1)如果两个操作数的类型相同,则和严格相等运算符的比较规则一样。
如果严格相等,那么比较结果相等;
如果它们不严格相等,则比较结果为不相等。
(2)如果两个操作数的类型不同,“==”相等运算符也可能认为它们相等。检测相等时将会遵守如下规则和类型转换:
①如果一个值是null,另一个是undefined,则它们相等
②如果一个值是数字,另一个是字符串,现将字符串转换为数字,然后使用转换后的值进行比较
③如果其中一个值时true,则将其转换为1后再进行比较;如果其中一个值时false,则将其转换为0后再进行比较。
④如果一个值是对象,另一个值是数字or字符串。则转换规则是讲对象转换为原始值,然后再进行比较(详见犀牛书3.8.3)
2、instance of运算符