仅使用参数失败但使用变量有效,有什么区别?
<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>
答案 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
永远不会停止成为原始字符串。而且,至关重要的是,reverse
和join
不是字符串函数,而是数组函数。
现在让我们看看其他电话。
var splitString = name.split("");
var reverseString = splitString.reverse();
var joinString = reverseString.join("");
return joinString;
这里你实际上使用函数调用的结果。您说&#34;将name
拆分为一个字符数组并调用此数组splitString
,然后反转字符数组并将其称为reverseString
,然后将该数组连接在一起称之为joinString
,然后返回joinString
。
请注意,从技术上讲,splitString
和reverseString
不是字符串。它们是数组,这就是join
和reverse
工作的原因。
另一种选择当然是链接它:
return name.split("").reverse().join("");