我正在尝试运用JavaScript,并发现了一些奇怪的现象。
这段代码会弹出一个"false"的警告,但不会报错。有人能解释为什么在 ===
后面添加一个或多个 !!!
没有导致任何错误吗?
var i = void 0;
var b = i ===! void 0 ? "true" : "false";
alert(b);//display false but no syntax errors..
我正在尝试运用JavaScript,并发现了一些奇怪的现象。
这段代码会弹出一个"false"的警告,但不会报错。有人能解释为什么在 ===
后面添加一个或多个 !!!
没有导致任何错误吗?
var i = void 0;
var b = i ===! void 0 ? "true" : "false";
alert(b);//display false but no syntax errors..
空格意味着什么都没有,所以它是
var b = (i === (!void 0)) ? "true" : "false";
它是什么
var b = (i === true) ? "true" : "false";
i === true; // false
(或许加上括号)。 - Paul S.!
是一个否定运算符,并且它是右结合的,与大多数其他运算符不同,所以它将只否定它前面的任何内容。
这基本上相当于
var b = i ===(!void 0) ? "true" : "false";
因此,基本上,您可以在某些东西前面有任意多个 !
,而这不会有任何影响,所以!!!!!!!!!!!!!false
将评估为true,因为这与!(!(!(!(!(!(!(!(!(!(!(!false))))))))))))
是相同的。
i
的页面上测试的。 - scrblnrd3!(...)
的数量并点赞 :) - Adam Rackis!0 // true
!!0 // false
!!!!!!0 // false, showing that !s are simply prefixes
! 0 // true, showing whitespace is irrelevant
0 === !0 // false
0 ===! 0 // false
0 ===!!! 0 // false
!
表示否定下一个语句,即使下一个语句是!
。 - RienNeVaPlu͢s!
只是一个否定,所以多个!
只会互相反转。 - Alma Do