什么';s是Ruby的JavaScript等价物';谁是splat接线员?
在Ruby中,您可以使用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
*
)操作符捕获函数的可变数量的参数,或者将数组的内容作为参数发送给函数,如下所示:
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”操作。见: