首页 > 网站 > WEB开发 > 正文

js中的[]==![]

2024-04-27 14:11:29
字体:
来源:转载
供稿:网友

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)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表