JS變量定義時連續賦值的坑!


在定義變量時,可以將值相同的變量采用連續賦值的方式,如下代碼:

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>

上例中返回的結果為:

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>

 

說重點:建議不要連續賦值!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM