Javascript - diese Frage
仅有的幸福
仅有的幸福 2017-05-19 10:23:39
0
5
469

Warum wird „undefiniert“ gedruckt? Wie kann ich dafür sorgen, dass dieser Code jeweils global, obj und inner gedruckt wird?

var scope = 'global';

function log() {
    console.log(this.scope)
}

var obj = {
    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log()
    }
};

obj.do();
仅有的幸福
仅有的幸福

Antworte allen(5)
小葫芦

最后对象志向window,window.scope,返回的才是undefined

小葫芦
var scope = 'global';

function log() {
    console.log(this.scope)
}

var obj = {
    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log();
        console.log(scope);
    }
};
obj.do();
console.log(obj.scope);
曾经蜡笔没有小新

this指向问题
JS函数不同执行环境下的this指向

给我你的怀抱

首先,这段代码打印出来的应该是global不是undefined,然后你这种写法inner是不可能通过this.scope来调用的,剩下的就去看看this指向吧

Ty80

var scope = 'global';

function log() {

console.log(this.scope)

}

var obj = {

scope: 'obj',
do: function () {
    var scope = 'inner';
    log();   //gobal
    console.log(this.scope);  //this指向obj,obj作用域中找到scope:obj
    console.log(scope);    //局部的inner
}

};

obj.do();

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage