javascript - 使用: string. split ("").reverse().join(")有什么意义?

标签 javascript reverse

我想先说。非常初学者。善待。然而。我正在尝试反转字符串。将字符串作为参数放入函数中并反转其顺序。例如'hello'应该返回'olleh'等。

我已经完成了:

function revString(stringArg) {
    return stringArg.split("").reverse().join(");
}

但是。通过这样做:

function revString (stringArg) {
    stringArg.split("");
    stringArg.reverse();
    stringArg.join("");
    return stringArg;
}

第二个函数的结果输出是 reverse() 不是函数。谁能告诉我这里有什么区别?

最佳答案

发生这种情况是因为 split()不会就地拆分字符串,而是将拆分后的字符串作为新值返回。在你的第二个函数中,你做 stringArg.split() ,但由于该操作没有发生,stringArg永远不会突变。它始终保留完全相同的值和类型,这会导致您看到的错误。

第一个函数起作用的原因是函数调用应用于前一个调用的返回值。换句话说:

  • split()被称为 stringArg
  • reverse()split()返回值 上调用,这是一个数组,因此可以直接反转
  • join()reverse()返回值 上调用

但在第二个函数中,您在完全相同的变量 stringArg 上调用它们, 始终保持不变。为了使您的功能正常工作,您需要像这样修改它:

function revString (stringArg) {
    a = stringArg.split(""); // Array
    b = a.reverse(); // Reversed array
    c = b.join(""); // String
    return c;
}

然而,虽然这可能更容易理解,但不必要地冗长。我建议坚持使用原始功能。

关于javascript - 使用: string. split ("").reverse().join(")有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401570/

相关文章:

javascript - cytoscape.js-qtip 扩展 : qtip. $domEle.qitp 不是函数

javascript - 快速路由中的 `/:foo*` 和 `/:foo(.*)` 有什么区别?

javascript - 设置显示='block'后div不显示;

c - 为什么在我仍然能够访问这些位置时出现段错误?

arrays - 如何在通过 while 循环插入数组时反转数组

javascript - Chart.js "display:none"问题

javascript - 自定义下拉按钮的辅助功能

c# - 如何在反向的 richtextbox 中查找文本?

list - 这个 Common Lisp 代码与他们在 Winston/Horn 的 LISP 第三版中教授的内容相似/相同吗?

c++ - 以另一个列表的相反顺序创建第二个单链表