标签:back lan round 有一个 class script 返回 ack 重点
在定义变量时,可以将值相同的变量采用连续赋值的方式,如下代码:
var a = b = c = ‘‘;
其实这里面有一个很大很大的坑,以代码说明问题:
<script language="javascript"> function test(){ var i = 0; _test(); function _test(){ if(++i>2) return; var a = b = ‘‘; // 这里连续赋值 for(var j=0; j<=2; j++){ b = ‘a‘ + b; _test(); } console.log(‘b:‘+b); } } test(); </script>
<script language="javascript"> function test(){ var i = 0; _test(); function _test(){ if(++i>2) return; var a = b = ‘‘; // 这里连续赋值 for(var j=0; j<=2; j++){ b = ‘a‘ + b; _test(); } console.log(‘b:‘+b); } } test(); </script>
上例中返回的结果为:
b:aaa
b:aaaaa
与我想像中的结果不一定,我想要的结果是:
b:aaa
b:aaa
所以,去掉连续赋值,改成逐个赋值,结果就正确了,代码如下:
<script language="javascript"> function test(){ var i = 0; _test(); function _test(){ if(++i>2) return; var a =‘‘, b = ‘‘; // 这里逐个赋值 for(var j=0; j<=2; j++){ b = ‘a‘ + b; _test(); } console.log(‘b:‘+b); } } test(); </script>
说重点:建议不要连续赋值!
标签:back lan round 有一个 class script 返回 ack 重点
原文地址:https://www.cnblogs.com/wm218/p/9977070.html