javascript定義函數后立即執行(IIFE)


Talk is cheap, show me the code.

// Immediately Invoked Function Expression - IIFE
// 定義后立即執行的JavaScript函數。

// 基本語法,將函數定義在()內部,最后附加()執行函數。
// 一個小技巧,先寫下兩個(), 然后第一個()內添加函數定義,第二個()添加調用參數。

// 無參數的情況
(function () {
  console.log("I am running immediately after define");
})();


// 有參數的情況
(function(a, b) {
  console.log(a + " + " + b + " = " + (a + b));
})(1, 2);


// 使用箭頭函數,無參
(() => {
  console.log("IIFE with arrow function")
})();

// 使用箭頭函數,有參。(如果箭頭函數體內只有一行代碼,那么return和{}可以省略)
((a, b) => console.log(a + b))(1, 2);


// 變種寫法,第二個()也可以寫在第一個()內部結尾處,但是這種寫法不支持箭頭函數哦。
(function () {
  console.log("another way...")
}());

// 使用一元運算符也可以創建IIFE,這種寫法在實際應用中不常見。
!(function() {
  console.log("IIFE with !")
})();

~(function() {
  console.log("IIFE with ~")
})();

+(function() {
  console.log("IIFE with +")
})();

-(function() {
  console.log("IIFE with -")
})();

// IIFE也可以為函數取名字,但是這個名字沒啥用,因為你不能使用名字調用該函數。
(function test() {
  console.log("IIFE with name...");
})();

// 為了防止合並javascript文件出錯,有時候要在函數前面加分號,表示前面語句結束,這是一個新的開始。詳見https://www.cnblogs.com/daysme/p/6440012.html
// 為什么要合並js文件呢?很多打包工具如webpack為了減少bundle體積,都會合並js文件,形成一個大的chunk.js,大家都不陌生吧。
;(function () {
  console.log("I am a new start");
})();

== The End ==


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM