js中的[]==![]

王朝学院·作者佚名  2016-05-22
窄屏简体版  字體: 小  |  中  |  大  |  超大  

js中的[]==![]alert(![] == [])alert([]==[])alert([]==false)alert([]==true)

昨天某童鞋问我这问题。。 经过百度 谷歌查资料折腾一番。 终于屡清楚了

一个一个来;首先第一个

alert(![] == [])//true

为什么自身和自身不想等呢?

首先抄一段==和===的说明:

相等操作符== and ===

相等操作符会对操作值进行隐式转换后进行比较

1、布尔值、字符串和数值进行比较,转换为数值之后在进行比较

2、null与undefined是相等的

3、与NaN判等,返回false

TipS: == 和 === 区别

1、对于Array,Object等高级类型,两者无区别:进行“地址”比较

2、对于基础类型==判断值是否相等,===不仅判断值,而且判断类型是否相等。

3、基础类型与高级类型有区别:==将高级类型转化为基础类型,进行“值”比较,===直接返回false

1、Boolean([]) //true 空数组转换为布尔值是true

2、优先级问题: !运算符的优先级 高于==运算符

3、==运算符会进行隐式转换数值(也就是在比较前会把==两边的值转换成number)

SO !

上面的可以这样理解

先进行!运算 Boolean(![]) //false

然后进行==运算 false==[] //比较前会转换两边数值为Number([])//0

最终公式

alert( Number(Boolean(![]))==Number([]) ) //结果为true

------------------------切--------------------------------------------

第二个 []==[]

==操作符

对于Array,Object等高级类型,两者无区别:进行“地址”比较

var a = [1,2,3];var b = [1,2,3];alert(a==b) //弹出false 因为地址不想等 和 []==[]同理

地址比较哪肯定就是不想等咯

后面2个参考:==将高级类型转化为基础类型

alert([]==false)alert([]==true)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航