[英]Javascript methods and variables(beginner)
理解代碼時遇到嚴重問題。
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
? 為什么我必須聲明新的變量連接? 否則返回將不會返回正確的聲明。 但代碼是正確的。
根據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);
請注意, splice()
方法會更改原始數組。
splice()
方法向/從數組添加/刪除項,並返回已刪除的項。
現在,你可以簡單地繼續使用舊的變量,而不是一個新的var
,如果陣列中的代碼的適當時候仍然需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.