javascript - js变量以及对象定义问题
迷茫
迷茫 2017-04-10 15:52:10
[JavaScript讨论组]

无意中看到了这样的一段代码:

<script>
    var obj = {
        fname: "John",
        lname: "Doe",
        age: 25
    };
    var txt = "";
    for (i in obj) {
        txt = txt + obj[i];
    }
    console.log(txt);
</script>

这里的输出是:JohnDoe25, 我就感觉有点不是很明白,为什么i没有初始化,比如var i,而且obj是一个对象,然而obj[i] 可以这样用吗?

迷茫
迷茫

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

全部回复(6)
天蓬老师

其实循环时写不写那个var 没有区别。原因是 js木有块级作用域 PS:es6(es2015) 中有了let。

所以你写循环时有木有 var 都一样。 不写var 少3个键盘键入而已。当然如果你用了emmet之类的就根本不存在了。

建议还是写上。好看点。

ringa_lee

我日这个代码太误导人了 如果写成for(var key in obj)你懂了么?

PHP中文网
  1. 对象和数组(其实数组也可以看做对象)都可以通过 obj.property或者 obj[property]的方式访问内部属性,或者元素。

  2. 同意@AlexChen的观点,写不写var都一样。不过我习惯写上。说不定哪天js就支持块级作用于了,嘿嘿。

ringa_lee

通过var定义的变量,其变量环境就在最靠近它的作用域。
js也可以直接声明的变量,默认为全局变量。但是在严格模式中,这样定义会报错。

高洛峰

这里的i是键呀。所以obj[i] 获取到的就是键值。例如:obj['fname']

黄舟

对于循环for(i in a)这种中的i是全局变量,因为没有声明,所以会自动定向为window.i,在嵌套循环中这么写容易状态失控。所以还是声明比较好

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

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