首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript阵列的布尔值计算

JavaScript阵列的布尔值计算
EN

Stack Overflow用户
提问于 2013-09-26 16:55:51
回答 1查看 1.3K关注 0票数 4

前几天我遇到了一个有趣的虫子。我正在测试一个数组,看看它是否计算为布尔false,但是直接计算它总是返回true:

代码语言:javascript
复制
> !![]
  true

好的,基本上所有我放进去的数组都会是true,对吧?我在JavaScript控制台中运行这个只是为了好玩:

代码语言:javascript
复制
> [] == true
  false

这里发生什么事情?

EN

回答 1

Stack Overflow用户

发布于 2013-09-26 17:54:01

这与抽象等式比较算法与用于将值转换为布尔值的算法有关。

通过查看规格,我们可以看到,点号9。是唯一定义当类型(左侧值)是对象时应该发生的事情。但是,它指定右侧值必须是字符串或数字

9.如果Type(x)是Object,Type( y )是字符串或数字,则返回比较ToPrimitive(x) == y的结果。

看着[] == true

typeof []'object',所以我们很好,但是typeof true不是'string''number',它是'boolean',所以它回到了最后一个语句,点数10。

10 .还假。

但是,!![]转换为!!Boolean([]),而且由于[]是一个推力值(对象是),这与编写返回true!!true相同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19034155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档