<分区>
根据什么逻辑 js
起作用 (!+[]+[]+![]).length 返回 9?这怎么可能?
据我所知,js 具有动态类型转换,但很难理解这里发生了什么
console.log((!+[]+[]+![]).length);
标签 javascript
<分区>
根据什么逻辑 js
起作用 (!+[]+[]+![]).length 返回 9?这怎么可能?
据我所知,js 具有动态类型转换,但很难理解这里发生了什么
console.log((!+[]+[]+![]).length);
最佳答案
首先:+[]
+[] 将数组转换为字符串,然后是数字。 [] 变为 "",然后变为 0。 +[123] 是 +"123",所以是 123 +[1,2] 是+"1,2",这不是数字,所以是NaN
!+[] 是 !0(不是零),所以它是 bool 值 true
第二个:true + []
将两者都转换为字符串,所以“true”+“”是“true”
第三个:![]
![] 是 bool 值 false,因为对象/数组始终是真实的。
第四:“真”+假
将boolean false 转换成字符串,所以"true"+ "false"就是"truefalse"
"truefalse".length 为 9
关于javascript - 为什么 console.log((!+[]+[]+![]).length) 给出 9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51010468/