
菜鸟一枚,不明白下面这两段代码为什么会输出不同的结果
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 PRO |
4 isbase OP PRO ``` 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 个人理解的代码: 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 第一个是循环里每次都重新赋值,所以最后一次有限 第二个是循环里每次往 result 结尾+数据,所以是所有属性的结果。 |
14 flydogs 2015-09-17 09:40:40 +08:00 有限=》有效 |