最近在找工作,所以空闲时间就看了看面试题,看了几个都做错了,然后就找了找原因,我把题目列出来,你看看你们能做对不?嘻嘻。
题目
1.[]==[]
2.[]==false
3.[]=![]
4.null==undefined
5.NAN==NAN
答案
1.false 2.true 3.true 4.true 5.false
解答
其实在相等操作符比较时候是有一定规则的,这个在javascript高级程序设计中p51页有讲解。
在转换不同的数据类型时,相等和不相等操作符遵循以下规则:
1.如果有一个操作数是布尔值,则在比较相等之前先讲其转换为数值----false转换为0,而true转换为1。
2.如果一个操作数是字符串,另一个操作数是数值,在比较相等之前先讲字符串转换为数值。
3.如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。
注意:这两个操作数在比较的时候应该遵循以下规则:
1.null和undefined是相等的.
2.要比较相等性之前,不能将null和undefined转换成任何值。
3.如果两个操作数都是对象,则比较他们是不是同一个对象,如果两个操作符都指向同一个对象,则为true,否则为false。
4.如果有一个操作数为NAN,则相等操作符返回false,而不相等操作符返回true。重要提示:NaN不等于NaN.
在有这个规则后&