! 会把后面的转化为布尔类型 !true 就是 false 了
[quote=引用 2 楼 somnus3421 的回复:] [] == ![]很正常 因为并非是同一个对象,当然值不相等。 题主的疑问是 [] == false 所以false == true?这怎么可能!(╯‵□′)╯︵┻━┻ 其实不对 因为js中 == 和 === 的区别 ==是存在隐式转换的 ==只是比较转化后的值,而===比较的是值与数据类型 [] == false 隐式转换后 []的值等于false []空数组和false用 ==比较, 会因为比较时调用valeOf还是toString( 原谅我记不清了,可以细看下js高程) 而 ![] === false,实际上![]和false是完全等价的 所以 [] == false(也就是![])就没问题了 所以这就是为什么在javascript中,全部用===是比==好的,因为不存在隐式转换,用强类型的思想写弱类型语言是非常必要的。
[] == ![]很正常 因为并非是同一个对象,当然值不相等。 题主的疑问是 [] == false 所以false == true?这怎么可能!(╯‵□′)╯︵┻━┻ 其实不对 因为js中 == 和 === 的区别 ==是存在隐式转换的 ==只是比较转化后的值,而===比较的是值与数据类型 [] == false 隐式转换后 []的值等于false []空数组和false用 ==比较, 会因为比较时调用valeOf还是toString( 原谅我记不清了,可以细看下js高程) 而 ![] === false,实际上![]和false是完全等价的 所以 [] == false(也就是![])就没问题了 所以这就是为什么在javascript中,全部用===是比==好的,因为不存在隐式转换,用强类型的思想写弱类型语言是非常必要的。
alert(![])//==false
87,907
社区成员
224,614
社区内容
加载中
试试用AI创作助手写篇文章吧