国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

閉包--閉包之this(三)

Backache / 1958人閱讀

自執行函數

下面三個自執行函數是一樣的

        //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,6
fn()
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聲明,不然會變成全局變量鏈式作用域:子對象會一級級向上尋找...

    andycall 評論0 收藏0
  • 進擊JavaScript)玩轉閉包

    摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進擊之詞法作用域與作用域鏈什么是閉包閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。在中函數構成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。所謂的閉包就是...

    cyixlq 評論0 收藏0
  • JavaScript閉包

    摘要:以上描述,全部符合閉包的描述,那這就是閉包。二執行過程之前的文章講了函數的執行上下文棧,變量對象,作用域鏈等內容,接下來通過閉包代碼回顧代碼是怎么樣的執行過程。將活動對象壓入作用域鏈頂端。函數執行結束,彈出執行上下文棧。 本文一共 1300 字,讀完只需 5 分鐘 概述 閉包, 可以說是每個前端工程師都聽說的一個詞,咋一看很難從字面上去理解,從而給人留下了閉包是一個重要又難以理解的...

    huashiou 評論0 收藏0
  • JavaScript閉包

    摘要:而閉包的妙處在于,當函數在執行完畢后它的活動對象不會被銷毀,因為匿名函數的作用域鏈仍然在引用函數的活動對象它的作用域鏈會被銷毀。 一、閉包 閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常用方式是,在一個函數內部創建另一個函數。 請看以下代碼:我們在createComparisonFunction函數里創建了一個閉包 function createComparisonFun...

    Mr_houzi 評論0 收藏0
  • 進擊的 JavaScript( 函數執行過程

    摘要:中沒有可執行的函數了,執行完出棧。當某個函數被調用時,會創建一個執行環境及相應的作用域鏈。檢查當前環境中的函數聲明使用聲明的。確定指向所以說的指向,是在函數執行時確定的。 理解js 的執行過程是很重要的,比如,作用域,作用域鏈,變量提升,閉包啊,要想明白這些,你就得搞懂函數執行時到底發生了什么! 一、執行環境(Execution Context)又稱執行上下文 當代碼執行時都會產生一個...

    netmou 評論0 收藏0

發表評論

0條評論

Backache

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<