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");