[英]split string using parameter error?
僅使用參數會失敗,但是使用變量會起作用,有什么區別?
<script type="text/javascript">
function Person(name) {
//Throws error - name.reverse is not a function
name.split("");
name.reverse();
name.join("");
// Works
var splitString = name.split("");
var reverseString = splitString.reverse();
var joinString = reverseString.join("");
return joinString;
}
document.write(Person("Joe"));
</script>
不能使用name.reverse()來反轉字符串。 reverse()是數組的方法。 這是解決方案
function Person(name) {
//Throws error - name.reverse is not a function
name = name.split("");
name = name.reverse();
name = name.join("");
return name;
}
從MDN split的文檔中:
返回值
在給定字符串中出現分隔符的每個點處拆分的字符串數組。
它返回一個數組,不改變就地變量的類型...實際上,我所知沒有操作可以改變就地變量的類型。
return name.split("").reverse().join("");
問題的關鍵是發生了什么name
的前三個函數調用。 答案是絕對沒有 。
name.split("");
name.reverse();
name.join("");
這表示“拆分name
,然后丟棄結果,然后反轉並丟棄結果,然后加入並丟棄結果”。 name
永遠不會停止是原始字符串。 而且,至關重要的是, reverse
和join
不是字符串函數,而是數組函數。
現在讓我們看一下其他調用。
var splitString = name.split("");
var reverseString = splitString.reverse();
var joinString = reverseString.join("");
return joinString;
在這里,您實際上是在使用函數調用的結果。 您說的是“將name
拆分為一個字符數組,並將其稱為splitString
數組,然后反轉字符數組並將其稱為reverseString
,然后將該數組連接在一起並稱為joinString
,然后返回joinString
。
請注意, splitString
技術上講, splitString
和reverseString
不是字符串。 它們是數組,這就是join
和reverse
工作的原因。
當然,另一個選擇是將其鏈接:
return name.split("").reverse().join("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.