1. 程式人生 > >js函數前加感嘆號和分號作用

js函數前加感嘆號和分號作用

bsp -c 出錯 定義函數 ava 使用 fmt ont 。。

函數聲明方式有兩種:

1,    function demo(){}  //聲明式定義函數
2,     var demo=function(){} //函數賦值表達式定義函數

  

我們通常這樣調用函數 demo()。

但如果我們為一個“定義函數”末尾加上(),解析器是無法理解的。

如果將函數體部分用()包裹起來就可以運行並且解析器是不報錯的:

(function() {})()  //調用匿名函數
但在前面加上一個布爾運算符(只多了一個感嘆號),就是表達式了,將執行後面的代碼,也就合法實現調用
!function() {}()

 在前面加上~+-等一元操作符也可以。。其實還有好幾種符合都可以保證匿名函數聲明完就立即執行

我們都知道分號是為了和前面的代碼隔開,js可以用換行分隔代碼,但是合並壓縮多個js文件之後,換行符一般會被刪掉,所以連在一起可能會出錯,加上分號就保險了。

你看到的感嘆號,一般是在壓縮過的js文件裏面,因為在匿名函數調用的時候,通常我們都是用:
(function(){})() 的形式,但也可以使用另一種形式:!function(){}() 前面的!號可以換成-+~等等一元操作符,從而省下了1字節。
 

js函數前加感嘆號和分號作用