在对象文字中访问上面定义的变量会导致ReferenceError

Tra*_*try 2 javascript variables referenceerror

var g = {
    lang: "ttt",
    l: function(){
        console.log(lang);
    }
}

console.log(g.l());
Run Code Online (Sandbox Code Playgroud)

ReferenceError:未定义lang

为什么lang未定义?

phe*_*nal 5

你需要使用g.langthis.lang.除非或使用,否则this将引用该g对象..call().apply()

例如,这将导致未定义:

var g = {
    lang: "ttt",
    l: function(){
        console.log(this.lang);
    }
}

console.log(g.l.call(Math));
Run Code Online (Sandbox Code Playgroud)

但是,这将始终给出正确的结果(如果您不重新分配g):

var g = {
    lang: "ttt",
    l: function(){
        console.log(g.lang);
    }
}

console.log(g.l.call(Math));
Run Code Online (Sandbox Code Playgroud)