立即執行函式(function(){})()
關鍵詞: 立即執行函式 匿名函式 作用域
格式: (function())()
作用: 立即執行函式(function())()是匿名函式, 主要利用函式的作用域, 減少全域變數的使用
解釋
前提知識
js中的函式通常有兩種命名方式,分別是 宣告式函式 和 函式運算式
// 宣告式函式
function func() {}
// 函式運算式
const func = function() {}
分析
-
當我們的有些簡單函式只執行一次的時候,我們通常會這么做
// 宣告式函式 function func () {console.log('I am a cat')} func() // I am a cat // 運算式函式 const func = function () {console.log('I am a cat')} // 方法1 func() // I am a cat const func = function () {console.log('I am a cat')} () // 方法2 func // I am a cat -
這時候我們會注意到函式的呼叫都要用到函式名, 那么如果我們不想要這個函式名呢?
可以發現函式運算式 方法2 中在函式宣告的時候直接將函式結果回傳給了變數 func, 并且在呼叫變數 func 的時候成功回傳結果.
那么是否可以這樣理解, 直接使用function () {console.log('I am a cat')}就可以實作我們的目的?function () { console.log('I am a cat')} () // Function statements require a function name -
失敗了? 函式需要一個函式名!
-
這是因為當我們直接使用
function () {console.log('I am a cat')}的時候, js解釋器會認為我們的函式是一個宣告式函式, 而非運算式函式. 因此必須使用一些特殊手段,讓js解釋器認出我們應該是函式運算式. 這樣的方法有很多,最常見的莫過于以下寫法. 這也是我最推薦的寫法(function () {console.log('I am a cat')}) () // I am a cat
其他寫法
// 知道即可,防止遇見了不認識
!function () {}();
~function () {}();
-function () {}();
+function () {}();
void function () {}();
(function () {}());
(function () {})();
// ES6 箭頭函式
(()=>{})()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460861.html
標籤:其他
