我当时在玩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('-')
我们也正在从split
到join
过渡吗?
我知道他们俩并不平等,有人可以告诉我我在想什么吗?
答案 0 :(得分:3)
我确实知道你为什么感到困惑,它 有点微妙。
当您执行B(A(arg))
时,您正在将A
的返回值传递到B
中。 B
将该值视为其参数argB
。
当您执行arr.split(' ').join('-')
时,您将通过在其上调用方法来使用 split
,而不是将返回值传递到{ {1}}作为参数。 join
根本不将数组视为参数。 (它的确将其视为join
,因为在正常情况下,当您执行this
时,对obj.method()
的调用中的this
与method
具有相同的值。这就是为什么这有点微妙。)
答案 1 :(得分:1)
为。 Split(),它返回数组。 对于联接语法是“您要联接的数组”。加入(分隔符)。
随着数组扩展功能的加入,您正在使用这种方式。
某些函数需要参数,但某些数据类型扩展函数才能应用某些操作。
我希望这能消除您的疑问
答案 2 :(得分:0)
方法正在应用于某些对象。在您的示例中,.split()返回一个数组。 join()应用于该新数组。