簡體   English   中英

使用參數分割字符串錯誤?

[英]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永遠不會停止是原始字符串。 而且,至關重要的是, reversejoin不是字符串函數,而是數組函數。

現在讓我們看一下其他調用。

var splitString = name.split("");
var reverseString = splitString.reverse();
var joinString = reverseString.join("");
return joinString;

在這里,您實際上是在使用函數調用的結果。 您說的是“將name拆分為一個字符數組,並將其稱為splitString數組,然后反轉字符數組並將其稱為reverseString ,然后將該數組連接在一起並稱為joinString ,然后返回joinString

請注意, splitString技術上講, splitStringreverseString不是字符串。 它們是數組,這就是joinreverse工作的原因。

當然,另一個選擇是將其鏈接:

return name.split("").reverse().join("");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM