javascript - for in语句的问题?
迷茫
迷茫 2017-04-10 16:35:59
[JavaScript讨论组]
var person={wbg:18};
console.log(person.wbg);
//此处显示18
for(var p in person){
console.log(this.p);
//为什么此处会显示wbg,而不是它的值18呢?又如何能让它显示18?
}

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
黄舟

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

ringa_lee
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指向问题

var person={
    wbg:18,
    show:function(){
        console.log(this.wbg)
    }
}
person.show()
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号