首页 > for in语句的问题?

for in语句的问题?

var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
console.log(this.p);
//为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}

请各位指点一下,说明其中的原理,谢谢!


var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
    console.log(this.p);
    //为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}

for...in 语句是一个对对象属性的枚举操作

for(var p in person){
首先会在全局作用域下或某个函数作用域下声明一个变量p,同时将person的某个可遍历属性名赋值给p
所以执行 console.log(this.p);时,如在全局环境而非函数内执行,其值wig
如果函数体内执行,其值为undefined,如下

(function(){
    for(var prop in person){
        console.log(prop);
        console.log('>>'+this. prop);//undefined
    }
}());

如要18,那就执行persion[p]


全局环境下,
this===window
因而
this.p===window.p===p
而在for p in person语法中
被枚举赋值给p的是person的键
因此你可能需要的是console.log(person[p])


总觉得这里的标题应该是this指向问题

var person={
    wbg:18,
    show:function(){
        console.log(this.wbg)
    }
}
person.show()
【热门文章】
【热门文章】