菜鸟一枚,不明白下面这两段代码为什么会输出不同的结果
var yun = new Object ()
yun.name = "bai";
yun.age = 199;
function showPro (obj ) {
var result = "";
for (var clone in obj )
result = clone + "=" + obj[clone];
}
}
return result;
}
console.log (showPro (yun )); // age=99
function showPro (obj ) {
var result = "";
for (var clone in obj )
result += clone + "=" + obj[clone];
}
}
return result; // name=bai age=199
}
1
jarlyyn 2015-09-16 16:30:44 +08:00 via Android
+= 和=的区别吧?
|
2
answeryou 2015-09-16 16:39:11 +08:00
第一个函数里是重新赋值
第二个函数里是累加赋值 |
3
isbase OP |
4
isbase OP ```
var yun = new Object () yun.name = "bai"; yun.age = 199; function showPro (obj ) { var result = ""; for (var clone in obj ) result = clone + "=" + obj[clone]; } } return result; } console.log (showPro (yun )); // age=199 function showPro (obj ) { var result = ""; for (var clone in obj ) result += clone + "=" + obj[clone]; } } return result; // name=bai age=199 } ``` |
5
crs0910 2015-09-16 17:40:07 +08:00
第一次是空的,第二次不是空的。
那是个 for 循环啊。 |
6
crs0910 2015-09-16 17:41:10 +08:00
a+=b 就是 a = a + b
循环里面 += ,就是每次都拼接新的在原来后面 |
7
crs0910 2015-09-16 17:41:35 +08:00
= 就是无视原来的 重新赋值了
|
9
IFoon 2015-09-16 17:55:04 +08:00
重新看一下 C 语言的语法。
|
11
an168bang521 2015-09-16 18:24:43 +08:00 1
个人理解的代码:
var yun ={}; yun.name = "bai"; yun.age = 199; function showPro (obj ) { var result = ""; for (var clone in obj ){ result = clone + "=" + obj[clone];//把等号右边计算后的值赋给等号左边的变量;记得 for-in 枚举出来的顺序是混乱的;枚举出来值的是第一次枚举出来的数值; } return result; } function showPro2 (obj ) { var result = ""; for (var clone in obj ){ //result += clone + "=" + obj[clone];//可以转化成下面一行的代码 //result = result +(clone + "=" + obj[clone]);//这句和上面一句一样的; //下面两句和上面一行是一样的; result= ("age" + "=" + "199 ");//分解的第一步。值等于第一次枚举 var result2=("name" + "=" +"bai ")+result;//分解的第二部,值等于第二次枚举的值+第一次枚举出来的值; } return result2; } console.log (showPro (yun )); // age=99 console.log (showPro2 (yun )); // name=bai age=199 |
12
shsf4 2015-09-16 23:45:31 +08:00
你试试 result=result+clone+"="+obj[clone];
|
13
flydogs 2015-09-17 09:40:02 +08:00 1
第一个是循环里每次都重新赋值,所以最后一次有限
第二个是循环里每次往 result 结尾+数据,所以是所有属性的结果。 |
14
flydogs 2015-09-17 09:40:40 +08:00
有限=》有效
|