使用参数错误拆分字符串?

时间:2016-10-22 10:03:51

标签: javascript

仅使用参数失败但使用变量有效,有什么区别?

<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>

3 个答案:

答案 0 :(得分:3)

使用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;
}

答案 1 :(得分:2)

来自split的MDN文档:

  

返回值

     

在给定字符串中出现分隔符的每个点处分割的字符串数组。

返回一个数组,不会就地改变变量的类型......实际上,我所知道的任何操作都不会改变就地变量的类型。

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

答案 2 :(得分:1)

关键是前三个函数调用中name会发生什么。答案是绝对没有

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

这说&#34;拆分name,然后丢弃结果,然后反转它并丢弃结果,然后加入它并丢弃结果&#34;。 name永远不会停止成为原始字符串。而且,至关重要的是,reversejoin不是字符串函数,而是数组函数。

现在让我们看看其他电话。

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

这里你实际上使用函数调用的结果。您说&#34;将name拆分为一个字符数组并调用此数组splitString,然后反转字符数组并将其称为reverseString,然后将该数组连接在一起称之为joinString,然后返回joinString

请注意,从技术上讲,splitStringreverseString不是字符串。它们是数组,这就是joinreverse工作的原因。

另一种选择当然是链接它:

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