Javascript方法和变量(初学者)

Javascript方法和变量(初学者),javascript,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

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

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.splice(I,1,rt)
之后执行
r.join(“”)
,然后返回
r
为什么必须声明新变量join?否则return将不会返回正确的语句。但代码是正确的。

根据

splice()方法通过删除 现有元素和/或添加新元素

这个方法返回什么

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

至于这个问题

为什么我必须声明新变量join

实际上,您不必声明新变量。您可以只返回这个值

return r.join(" ");
函数替换(str、before、after){
var rtt=之前;
var-rt;
if(在[0]之前===在[0].toUpperCase()之前){
var aa=分割后(“”);
var u=在[0]之后。toUpperCase();
aa.拼接(0,1,u);
rt=aa.连接(“”);
}
否则{
rt=之后;
}
var r=str.split(“”);
var i=r.indexOf(rtt);
r、 拼接(i,1,rt);
返回r.join(“”);
}
var replaced=replace(“一只敏捷的棕色狐狸跳过了懒狗”,“跳了”,“跳了”);

文件。编写(替换)请注意,
splice()
方法会更改原始数组

splice()


现在,如果在代码的适当过程中仍然需要数组,您可以继续使用旧变量而不是新的
var

您只需执行
r=r.join(“”)而不是新变量。但是
r.join(“”)
将返回一个值而不设置它,这就是为什么;返回r.join(“”)。我想我知道什么是问题。我认为join方法类似于数组变体,它将修改现有的数组,但它是错误的。是吗?是的,我知道。但是r.splice()修改r数组。之后,r应该返回新的修改过的数组r,并返回它。但在这之后,当我执行r.join(“”)时,它将不会返回字符串,只返回现有的修改数组。但如果我声明一个新变量var join=r.join,它将返回一个字符串。为什么?不,
r.splice()
会返回一个新数组,修改了
r
的内容。所以使用
r.join
就可以做你想做的事情。请检查上面的代码片段,它本质上是您的代码,并按照我的建议修改了返回语句。我想我知道是什么问题。我认为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);
    var join = r.join(" ");
    return join;
}

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