天天看點

JavaScript 學習-46.立即執行函數

前言

立即執行函數有以下作用

  • 建立一個獨立作用域,這個作用域裡面的變量,外部通路不到,避免變量污染。
  • 閉包和私有資料

使用文法

有兩種寫法

// 第一種:用括号把整個函數定義和括号調用包裹起來
(function(){
 // 函數體
}())

// 第二種:用括号把函數定義包裹起來,後面再加括号調用
(function (){
 // 函數體
})()      

一般用第二種會多一些

(function (){
 // 函數體
})()      

示例

使用示例1.匿名函數直接執行

// 匿名函數
(function (){
    let x = 'hello'
    let y = 'world'
    console.log(x+y)
})()      

使用示例2.實作閉包的作用

const m = (function(){
    let x = 'hello';
    let y = 'world'
    return  function() {
        return x+y
    }

})()

console.log(m());      

子產品化

使用立即執行函數,可以不暴露私有成員

var m = (function() {
    var num = 0;
    var f1 = function() {
      return num
    }
    var f2 = function() {
        return num + 1
    }
    return {
      f1: f1,
      f2: f2
    }
})()

console.log(m.f1())      

繼續閱讀