Heim  >  Artikel  >  Web-Frontend  >  Codebeispiele für Javascript-Abschlüsse

Codebeispiele für Javascript-Abschlüsse

不言
不言nach vorne
2019-03-05 13:51:502035Durchsuche

Dieser Artikel enthält Codebeispiele zu Javascript-Abschlüssen. Freunde in Not können darauf verweisen.

Abschluss

Wenn die innere Funktion nach außen gespeichert wird, wird ein Abschluss generiert. Das Schließen führt dazu, dass die ursprüngliche Bereichskette nicht freigegeben wird, was zu Speicherlecks führt

//内部的函数被返回到外部,必然形成闭包
function a(){
function b(){
var b = 234;
console.log(a);
}
var a = 123;
return b;
}
var demo = a();
demo(); // -->123
function test1(){
var num = 100;
function test2(){
num ++;
console.log(num);
}
return test2;
}
var demo1 = test1();
demo1();  //101
demo1();  //102
//
function test(){
            var arr = [];
            for(var i = 0; i < 10; i++){//当i = 10的时候循环停止
                arr[i] = function(){ //arr的每一位都是一个函数
                    console.log(i);//虽然函数已经定义,但未执行
                }
            }
            return arr;
        }
        var myArr = test();
        for(var i = 0; i < myArr.length; i++ ){
            myArr[i]();
        }

Wenn die letzte Funktion ausgeführt wird, wird i im AO des Tests aufgerufen

AO{
i = 10;
}

Lösung: Führen Sie die Funktion aus sofort

function test() {
            var arr = [];
            for(var i = 0; i < 10; i++) {
                (function(j) {
                    arr[j] = function() {
                        console.log(j);
                    }
                }(i))
            }
            return arr;
        }
        var myArr = test();
        for(var i = 0; i < myArr.length; i++) {
            myArr[i]();
        }

1. Öffentliche Variablen implementieren

zB: Funktionsakkumulator

function add(){
var count = 0;
function demo(){
count ++ ;
console.log(count);
}
return demo;
}
var counter = add();
counter();

2. Kann zwischengespeichert werden

zB:eater

function test2(){
var food = &#39;apple&#39;;
var obj = {
eatFood : function(){
if(food != ""){
console.log("I am eatting " + food);
food = &#39;&#39;;
}else{
console.log("There is nothing! empty!");
}
},
pushFood : function(myFood){
food = myFood;
}
}
return obj;
}
var obj = test2();
obj.eatFood();
obj.eatFood();
obj.pushFood(&#39;banana&#39;);
obj.eatFood();

3 .Kapselung und Attributprivatisierung können erreicht werden.

zB: Person();

Das obige ist der detaillierte Inhalt vonCodebeispiele für Javascript-Abschlüsse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen