开发者

! preceding function in javascript? [duplicate]

开发者 https://www.devze.com 2023-02-19 07:07 出处:网络
This question already has answers here: Closed 11 years ago. Possible Duplicate: What does the exclamation mark do before the function?
This question already has answers here: Closed 11 years ago.

Possible Duplicate:

What does the exclamation mark do before the function?

I saw a function formatted like thi开发者_高级运维s today for the first time:

!function(){}();

What is the preceding exclamation mark for? I assume it functions the same as:

(function(){})();

But... what's going on here?


The preceding ! takes the un-parseable statement, and allows it to to be parsed by the JS engine, which in turn returns true.

function(){}();
SyntaxError: Unexpected token (

!function(){}();
>>true


It simply makes the JavaScript parser parse it as an expression, which is necessary to execute it.


I've tried it, it returned true. The function returns undefined, and !undefined is true.

!function(){}();
^          ^ ^
C          A  B
  • A. function(){} is an empty anonymous function
  • B. () executes the function (A), returning undefined
  • C. ! negates undefined, which becomes true

I think they used that trick for a code golf or an obfuscated code. It is a bad practice to practially use that

Try javascript:alert(!function(){}()) in your browser address bar

0

精彩评论

暂无评论...
验证码 换一张
取 消