可能的重复:
感叹号在函数之前有什么作用?
今天第一次看到这样格式化的函数:
!function(){}();
前面的感叹号是什么意思?我假设它的功能与:
(function(){})();
但是……这是怎么回事?
可能的重复:
感叹号在函数之前有什么作用?
今天第一次看到这样格式化的函数:
!function(){}();
前面的感叹号是什么意思?我假设它的功能与:
(function(){})();
但是……这是怎么回事?
前面!
的语句采用 un-parseable 语句,并允许它被 JS 引擎解析,然后返回 true。
function(){}();
SyntaxError: Unexpected token (
!function(){}();
>>true
它只是让 JavaScript 解析器将其解析为一个表达式,这是执行它所必需的。
我试过了,它返回true。函数返回undefined
,并且!undefined
为真。
!function(){}();
^ ^ ^
C A B
function(){}
是一个空的匿名函数()
执行函数(A),返回undefined
!
否定undefined
, 变成true
我认为他们将这个技巧用于代码高尔夫或混淆代码。实际使用它是一种不好的做法
javascript:alert(!function(){}())
在浏览器地址栏中尝试