多功能调用中的点操作

时间:2019-05-19 14:20:52

标签: javascript

我当时在玩Javascript,有一个让我感到困惑的东西。

假设我们有两个功能

function A (argA) {
 //Do Something with argA
 return somehingFromA
}

function B (argB) {
  //Do somwthing with argB
  return somethingFromB
}

如果我们要将A的返回值传递给B,我们可能会这样做B(A(arg))

这应该给函数A到B返回处理吗?

现在,当我们做这样的事情

arr.split(' ').join('-') 

我们也正在从splitjoin过渡吗?

我知道他们俩并不平等,有人可以告诉我我在想什么吗?

3 个答案:

答案 0 :(得分:3)

我确实知道你为什么感到困惑,它 有点微妙。

当您执行B(A(arg))时,您正在将A返回值传递到B中。 B将该值视为其参数argB

当您执行arr.split(' ').join('-')时,您将通过在其上调用方法来使用 split,而不是将返回值传递到{ {1}}作为参数。 join根本不将数组视为参数。 (它的确将其视为join,因为在正常情况下,当您执行this时,对obj.method()的调用中的thismethod具有相同的值。这就是为什么这有点微妙。)

答案 1 :(得分:1)

为。 Split(),它返回数组。 对于联接语法是“您要联接的数组”。加入(分隔符)。

随着数组扩展功能的加入,您正在使用这种方式。

某些函数需要参数,但某些数据类型扩展函数才能应用某些操作。

我希望这能消除您的疑问

答案 2 :(得分:0)

方法正在应用于某些对象。在您的示例中,.split()返回一个数组。 join()应用于该新数组。