четверг, 20 июня 2013 г.

Сокрытия или Замыкания

Сокрытия или Замыкания задают область видимости переменным.

var x = "global";

function outer() {
    var y = "outer";  

    function inner() {
        var x = "inner";  
    }
}

global
    outer
         inner

//VariableEnvironment: {x: undefined, etc.};
var x = "global";
//VariableEnvironment: {x: "global", etc.};

function outer() {
    //VariableEnvironment: {y: undefined, outerLex: {x: "global", etc.}};
    var y = "outer";  
    //VariableEnvironment: {y: "outer", outerLex: {x: "global", etc.}};

    function inner() {
        //VariableEnvironment: {x: undefined, outerLex: {y: "outer", outerLex: {x:"global", etc.}};
        var x = "inner";  
        //VariableEnvironment: {x: "inner", outerLex: {y: "outer", outerLex: {x:"global", etc.}};
    }
}

Пример.

a.onclick = function(){
    this.innerHTML = 1; // здесь this - это объект <a>
    setTimeout(function(){
                          this.innerHTML = 2; // здесь this - это объект window
    }, 1000);
};

Комментариев нет:

Отправить комментарий