不明白这道题
for循环的不是属性名吗?
第一次循环:str+=obj.name;
第二次循环:str+=obj.price;
第三次循环:str+=obj.action;
结果加起来不是没有重复的吗?
请老师说一下具体的每次循环让我理解一下
正在回答
1、首先先了解for in
for…in语句用来遍历对象的每一个属性,每次都将属性名作为字符串保存在变量里。
for (variable in object ){
statement
}
(1)variable是一个变量名,数组的一个元素或者是对象的一个属性
(2)object是一个对象名,或者是计算结果为对象的表达式。
(3)statement通常是一个原始语句或者语句块,由它构成循环的主体。
第一循环遍历,执行var i in obj,找到的是obj.name,上面说了for……in每次都将属性名作为字符串保存在变量里,因此,这里是将obj.name的值保存在i里面。也就是得到的是字符串aaa,执行alert(str+=obj[i]),因为遍历到一个字符串aaa,没有其他可拼接的字符串,因此输出结果是aaa,
第二次循环遍历,执行var i in obj,找到的是obj.price,得到的是bbb,这个时候,因为第一次遍历,已经遍历得到了字符串aaa,这一次遍历得到了字符串bbb,因此执行alert(str+=obj[i]),会将两次遍历得到的字符串aaa和bbb进行拼接,即得到aaabbb,
第三次循环遍历,执行var i in obj,找到的是obj.action,得到的是
function() {
alert("ccc");
};
因为前两次遍历得到了aaa和bbb,因此执行alert(str+=obj[i]),会将这三次遍历得到的字符串aaa和bbb和
function() {
alert("ccc");
};
进行拼接,即得到aaabbbfunction() {
alert("ccc");
};
如果for in里面的代码块如下
for (var i in obj) { alert(obj[i]) }
同学的理解就是正确的了。
另外,老师想要跟你解释一下老师给同学讲解原理的本意,这里老师是希望通过概念,能够帮助同学独立思考,毕竟将来工作的时候,在团队协同开发一个项目的时候,是需要能够读懂别人的代码的,工作中,同事是不可能给你讲一遍他的写的每一行代码是什么意思,是如何执行的,当然,直接给你结果,对于老师来说是非常快捷的解决你的疑惑的方法,但是这样对你来说,只能达到只知其一不知其二的效果。这样对你的学习成果是非常不利的。老师希望能够通过一步一步的引导同学去思考这个原理,慢慢的学会分析代码,掌握编程语言的逻辑。自己思考理出来的结果跟别人给你讲的结果,收获是不一样的哦。
希望可以帮到你!
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星