自執行函數
下面三個自執行函數是一樣的
//1. function test(i){ console.log(i) } test("aa") //2. (function(i){ console.log(i) })("aa") // 3. var aa = "aa"; (function(i){ console.log(i) })(aa)
var a = [1, 2, 3, 4]; { var a = [1, 2, 3, 4, 5]; (function(i) { var a = [1, 2, 3, 4, 5, 6]; for (var i = 0; i < a.length; i++) { console.log(i) //0,1,2,3,4,5 } })(a) }this
var num =1; var obj = { num:2, fn:(function(num){ this.num*=2; num+=2; return function(){ this.num*=3; num++; console.log(num) } })(num) //window下的num } var fn = obj.fn; fn(); //4 obj.fn() //5 console.log(num,obj.num); //6,6fn()
console.log(fn) console.log(obj.fn())拆分
var num =1; var obj = { num:2, fn:(function(num){ this.num*=2; num+=2; console.log(this) //window return function(){ this.num*=3; num++; console.log(this) //window console.log(num) //4 console.log(this.num) //6 } })(num) //window下的num } var fn = obj.fn; fn(); console.log(num,obj.num); //6,2
var num =1; var obj = { num:2, fn:(function(num){ this.num*=2; num+=2; console.log(this) //window return function(){ this.num*=3; num++; console.log(this) //obj console.log(num) //4 console.log(this.num) //6 } })(num) //window下的num } var fn = obj.fn; obj.fn() console.log(num,obj.num); //2,6
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99299.html
摘要:在一個閉包環境內修改變量值,不會影響另一個閉包中的變量。直到看到函數閉包閉包這篇文章的代碼一部分,終于明白其中的邏輯了。 閉包 閉包定義:指擁有多個變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。函數內部可以直接讀取全局變量。函數內部變量無法在函數外部訪問。函數內部聲明要用var或者let聲明,不然會變成全局變量鏈式作用域:子對象會一級級向上尋找...
摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進擊之詞法作用域與作用域鏈什么是閉包閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。在中函數構成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。所謂的閉包就是...
摘要:以上描述,全部符合閉包的描述,那這就是閉包。二執行過程之前的文章講了函數的執行上下文棧,變量對象,作用域鏈等內容,接下來通過閉包代碼回顧代碼是怎么樣的執行過程。將活動對象壓入作用域鏈頂端。函數執行結束,彈出執行上下文棧。 本文一共 1300 字,讀完只需 5 分鐘 概述 閉包, 可以說是每個前端工程師都聽說的一個詞,咋一看很難從字面上去理解,從而給人留下了閉包是一個重要又難以理解的...
摘要:而閉包的妙處在于,當函數在執行完畢后它的活動對象不會被銷毀,因為匿名函數的作用域鏈仍然在引用函數的活動對象它的作用域鏈會被銷毀。 一、閉包 閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常用方式是,在一個函數內部創建另一個函數。 請看以下代碼:我們在createComparisonFunction函數里創建了一個閉包 function createComparisonFun...
摘要:中沒有可執行的函數了,執行完出棧。當某個函數被調用時,會創建一個執行環境及相應的作用域鏈。檢查當前環境中的函數聲明使用聲明的。確定指向所以說的指向,是在函數執行時確定的。 理解js 的執行過程是很重要的,比如,作用域,作用域鏈,變量提升,閉包啊,要想明白這些,你就得搞懂函數執行時到底發生了什么! 一、執行環境(Execution Context)又稱執行上下文 當代碼執行時都會產生一個...
閱讀 1437·2021-11-25 09:43
閱讀 2580·2021-09-24 10:30
閱讀 3659·2021-09-06 15:02
閱讀 3593·2019-08-30 15:55
閱讀 3300·2019-08-30 15:53
閱讀 1693·2019-08-30 15:52
閱讀 2142·2019-08-30 14:21
閱讀 2010·2019-08-30 13:55