cs001();
function cs001() {
 var _a = "";
 for (var i = 0; i < 5; i++) {
     _a += "a";
     cs002(_a);
 }
 alert(_a);
}//为什么不改变_a啊?JS 是如何写?
function cs002(_a) {
    _a += "b";
}
为什么_a = "aaaaa";我要"ababababab";

解决方案 »

  1.   

    _a 是 string,而 string 是值引用,并非对象引用!
    cs001(); 
    function cs001() { 
    var _a = new String(); 
    for (var i = 0; i < 5; i++) { 
        _a += "a"; 
        _a = cs002(_a); 

    alert(_a); 
    } //为什么不改变_a啊?JS 是如何写? 
    function cs002(_a) { 
        return _a += "b"; 
      

  2.   


    var _a = ""; 
    cs001(); 
    function cs001() { 
    for (var i = 0; i < 5; i++) { 
        _a += "a"; 
        cs002(_a); 

    alert(_a); 

    function cs002() { 
    _a += "b"; 
    }
    把_a转成全局变量,或cs001(); 
    function cs001() { 
    var _a = ""; 
    for (var i = 0; i < 5; i++) { 
        _a += "a"; 
        _a=cs002(_a); 

    alert(_a); 

    function cs002(_a) { 
    return _a += "b"; 
    }传递参数,回传你的_a是局部变量,问题在这里
      

  3.   

    看下面的例子你就知道1L才是正确的
            cs001();
            function cs001() {
            var _a = "";
            var b = new Object();
            b.str = "";
            for (var i = 0; i < 5; i++) {
                _a += "a";
                b.str += "a";
                cs002(_a);
                cs003(b);
            }
            alert(_a);
             alert(b.str);
            }        function cs002(_a) {
                _a += "b";
            }        function cs003(_a){
                _a.str += "b";
            }
      

  4.   

    上面说的很清错了,理解清楚这个_a的作用域就好了,
    或者直接用匿名函数试试,我没测试:
    cs001();
    function cs001() {
    var _a = "";
    for (var i = 0; i < 5; i++) {
        _a += "a";
        cs002(_a);
    };
    cs002=function(_a){
        _a += "b";
    }
    alert(_a);
    }