首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Javascript怪异的非操作符和空数组表达式

理解Javascript怪异的非操作符和空数组表达式
EN

Stack Overflow用户
提问于 2020-12-07 00:51:32
回答 1查看 83关注 0票数 3

我当时正在准备考试,我发现了这个表达式(!+[]+[]+![]),我想知道为什么它等于javascript中的"truefalse“?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 01:00:24

此处使用的操作人员如下:

  • !,否定,优先 17
  • +,一元+优先17
  • +,加法,优先14

根据运算符优先级将其间隔:

代码语言:javascript
复制
(!+[] + [] + ![])

计算这三个表达式,然后在这三个表达式上使用加法:

!+[]:一元+首先将空数组强制为一个数字。数组在转换为原语时,会让.join(',')调用它们。在这里,没有元素,结果是空字符串,而空字符串在转换为数字时是0,因为它是falsey。然后!将其反转并将其转换为布尔值,使其为true

代码语言:javascript
复制
(true + [] + ![])

+从左到右操作.如前所述,当空数组被胁迫到原语时,它就变成了空字符串。因此,true + []导致true + '',导致字符串'true'

代码语言:javascript
复制
('true' + ![])

数组是真实的。用!反演这一点的真实性,然后得到false

代码语言:javascript
复制
('true' + false)

对于+,当任何一方都不是数字时,双方都会被迫使用字符串。结果是'truefalse'

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

https://stackoverflow.com/questions/65174737

复制
相关文章

相似问题

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