[英]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.