什么';s是Ruby的JavaScript等价物';谁是splat接线员?

什么';s是Ruby的JavaScript等价物';谁是splat接线员?,javascript,ruby,ecmascript-5,ecmascript-harmony,Javascript,Ruby,Ecmascript 5,Ecmascript Harmony,在Ruby中,您可以使用splat(*)操作符捕获函数的可变数量的参数,或者将数组的内容作为参数发送给函数,如下所示: def example(arg1, *more_args) puts "Argument 1: #{arg1.inspect}" puts "Other arguments: #{more_args.inspect}" end test_args = [1, 2, 3] example(*test_args) 输出: 参数1:1 其他论据:[2,3] 这在Jav

在Ruby中,您可以使用splat(
*
)操作符捕获函数的可变数量的参数,或者将数组的内容作为参数发送给函数,如下所示:

def example(arg1, *more_args)
  puts "Argument 1: #{arg1.inspect}"
  puts "Other arguments: #{more_args.inspect}"
end

test_args = [1, 2, 3]

example(*test_args)
输出:

参数1:1
其他论据:[2,3]

这在JavaScript中的等价物是什么?

在旧版本的JavaScript(ECMAScript 5)中,不存在与此完全等价的东西。但是,在支持ECMAscript 6的现代浏览器中,有一些非常相似的东西,用三个句号(
)表示

在函数调用和数组声明中使用此三点语法时,称为。在函数定义中使用时,将调用它

例如:

函数示例(arg1,…更多参数){//Rest参数
log(“参数1:,arg1”)
log(“其他参数:”,更多参数)
}
测试参数=[1,2,3]
示例(…测试参数)//扩展运算符
输出:

参数1:1
其他论据:[2,3]
spread operator和rest参数在所有主要浏览器的最新版本(Internet Explorer除外)和最新Node.js LTS版本中都可用


完全兼容表:,

第一次使用可以使用
Array.slice(arguments)
完成

第二种方法可以通过使用函数的
.apply()
方法来实现。

可能的重复:Python splat在定义和调用上类似。ES6的“spread”操作符是ruby splat的“split”操作,ES6的“rest”参数类似于ruby splat的“slurp/collect”操作。见: