这是有效的,并返回"10"JavaScript中的字符串(此处更多示例):
console.log(++[[]][+[]]+[+[]])Run Code Online (Sandbox Code Playgroud)
为什么?这里发生了什么?
以下显示"0"在Javascript 中为false:
>>> "0" == false
true
>>> false == "0"
true
Run Code Online (Sandbox Code Playgroud)
那么为什么以下打印"ha"?
>>> if ("0") console.log("ha")
ha
Run Code Online (Sandbox Code Playgroud) 空数组是真的,但它们也等于false.
var arr = [];
console.log('Array:', arr);
if (arr) console.log("It's true!");
if (arr == false) console.log("It's false!");
if (arr && arr == false) console.log("...what??");Run Code Online (Sandbox Code Playgroud)
我想这是由于等于运算符操作的隐式转换.
任何人都可以解释幕后发生的事情吗?