Heim > Fragen und Antworten > Hauptteil
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();
高洛峰2017-05-19 10:25:39
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);
给我你的怀抱2017-05-19 10:25:39
首先,这段代码打印出来的应该是global不是undefined,然后你这种写法inner是不可能通过this.scope来调用的,剩下的就去看看this指向吧
PHP中文网2017-05-19 10:25:39
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();