1.       =====

对象、数组和函数的比较是引用,也就是说只有两个变量引用的是同一个对象时,他们才是相等的。

下面的规则用于===判定两个值类型是否完全相等

Ø         如果两个值的类型不同,它们就不相同 

Ø         如果两个值的类型是数字,而且值相等,那么除非其中一个或两个都是NaN,否则它们是相等的

Ø         如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。

Ø         如果两个值都是布尔值true,或者两个值都是布尔值false,那么它们等同

Ø         如果两个值引用的是同一个对象、数组或函数,那么它们完全等同。

Ø         如果两个值都是null或者是undefined,它们完全相同。

下面的规则用于判定==运算符比较的两个值是否相等

Ø         如果两个值具有相同的类型,那么就检测它们的等同性。

Ø         如果两个值的类型不同,它们仍然可能相等。

²    如果一个值是null,另一个值是undefined,则相等

²    如果一个值是数字,另一个是字符串,把字符串转换为数字后进行比较

²    如果一个值为true,将它转换为1,再进行比较,如果一个值为false,把它转化为0,再进行比较。

²    如果一个值是对象,另一个值是数字或字符串,将对象转换成原始类型的值,在进行比较。可以使用对象的toString()方法或valueOf()方法把对象转化成原始类型的值。JS核心语言的内部类通常先尝试valueOf()再尝试toString(),但是Date类则相反,不属于JS核心语言的对象则可采用JS实现定义的方式把自身转换成原始数值。

2.       比较预算符

比较运算符只能在数字和字符串上执行,所以不是数字或字符串的要转换为数字或字符串。规则如下:

Ø         如果两个都是数字,数字比较

Ø         如果两个都是字符串,字符串比较

Ø         如果一个是字符串,一个是数字,则转换为数字比较,与NaN的任何比较都是false

3.       in运算符要求左边是一个字符串,或者可以被转换为字符串,右边是一个对象或数组。如果左边的字符串的值是右边对象的属性名返回true

 其它的都和C#中的一样所以就不写了,当让还有一些不常用的也没有写

posted on 2011-03-09 16:19  王长委  阅读(253)  评论(0编辑  收藏  举报