Javascript方法和变量(初学者)

时间:2015-07-22 05:15:52

标签: javascript

我在理解代码时遇到了严重的问题。

function replace(str, before, after) {

    var rtt = before;
    var rt;

    if(before[0] === before[0].toUpperCase()) {
        var aa = after.split("");
        var u = after[0].toUpperCase();
        aa.splice(0,1,u);
        rt =  aa.join("");    
    }
    else {
       rt = after;
    }

    var r = str.split(" ");  
    var i = r.indexOf(rtt);
    r.splice(i,1, rt);
    var join = r.join(" ");
    return join;
}

replace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");

我不明白为什么我在r.join(" ")之后只能r.splice(i,1,rt)然后返回r为什么我必须声明新的变量连接?否则返回将不会返回正确的语句。但代码是正确的。

2 个答案:

答案 0 :(得分:2)

根据MDN

  

splice()方法通过删除来更改数组的内容   现有元素和/或添加新元素。

此方法返回什么内容?

  

包含已删除元素的数组。如果只有一个元素   删除后,返回一个元素的数组。如果没有元素   删除后,返回一个空数组。

就这个问题而言

  

为什么我必须声明新变量加入?

实际上,您不必申报新变量。您只需返回此值

即可
return r.join(" ");



function replace(str, before, after) {

    var rtt = before;
    var rt;

    if(before[0] === before[0].toUpperCase()) {
        var aa = after.split("");
        var u = after[0].toUpperCase();
        aa.splice(0,1,u);
        rt =  aa.join("");    
    }
    else {
       rt = after;
    }

    var r = str.split(" ");  
    var i = r.indexOf(rtt);
    r.splice(i,1, rt);
    return r.join(" ");
}

var replaced = replace("A quick brown fox jumped over the lazy dog", "jumped", "leaped");

document.write(replaced);




答案 1 :(得分:1)

请注意,splice()方法会更改原始数组。

  

splice()方法在数组中添加/删除项目,返回已删除的项目。

现在,如果在代码的适当时候仍然需要该数组,则可以继续使用旧变量而不是新的var