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