我們知道函式的呼叫方式通常是functionname()
但如果我們嘗試為乙個「定義函式」末尾加上(),解析器是無法理解的。
function msg()();//解析器是無法理解的
定義函式的呼叫方式應該是 msg()。
想讓函式立即執行可以將函式體部分用()包裹起來。
這是因為,使用括號包裹定義函式體,解析器將會以函式表示式的方式去呼叫定義函式。也就是說,任何能將函式變成乙個函式表示式的作法,都可以使解析器正確的呼叫定義函式。如下:
// 這麼寫會報錯,因為這是乙個函式定義:
function() {}()
// 常見的(多了一對括號),呼叫匿名函式:
(function() {})()
// 但在前面加上乙個布林運算子(只多了乙個感嘆號),就是表示式了,將執行後面的**,也就合法實現呼叫
!function() {}()
! 只是其中乙個運算子,而 + - || ~都有這樣的功能。
用 ! 可能更多的是乙個習慣問題,不同的運算子,效能是不同的。
效果等同於以下常用的兩種立即執行方式:
(function() {})();
// or
(function() {}());
黑馬程式設計師 運算子以及前加後加
asp.net android ios開發 net培訓 期待與您交流!概念 運算子 即為自加,使運算元自加1,是乙個一元運算子。它可出現在運算元的前面和後面。第一種形式是字首增量操作。該操作的結果是運算元加 1 之後的值。第二種形式是字尾增量操作。該運算的結果是運算元增加之前的值。數值型別和列舉型別...
實現複數類中的加運算子過載 C 運算子過載
int家有i1和i2弟兄倆,小手一拉i1 i2,加起來了 double家有d1和d2姐妹倆,小手也一拉,d1 d2,也加起來了。c 村子裡來了複數 complex 一家子,也有倆兄弟c1和c2,想要來個累加,笨乎乎地,c1.add c2 c1和c2傷心極了,也想像其他小朋友一樣,小手一拉,c1 c2...
二元加運算子
減法,乘法,除法在運算過程中,都是先將運算元,轉成數值,再進行後續操作,而加法,卻有所不一樣。當兩個數值相加時,加法運算子,跟減法操作符一樣,直接求和。var a 1 var b 2 a b 3當兩個字串相加時,加法運算子,這表現為字串拼接。var a 1 var b 2 a b 12 注意 只有有...