在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)
输出:
Argument 1: 1
Other arguments: [2, 3]
JavaScript中的等价物是什么?
答案 0 :(得分:14)
在旧版本的JavaScript(ECMAScript 5)中,并不存在与此完全等效的内容。在支持ECMAscript 6的现代浏览器中,有一些非常相似的东西用三个句点表示(...
)。
当在函数调用和数组声明中使用时,这种三点语法称为spread operator。在函数定义中使用时,它被称为rest parameters。
示例:
function example(arg1, ...more_args) { // Rest parameters
console.log("Argument 1: ", arg1)
console.log("Other arguments: ", more_args)
}
test_args = [1, 2, 3]
example(...test_args) // Spread operator
输出:
Argument 1: 1
Other arguments: [2, 3]
所有主要浏览器的最新版本(Internet Explorer除外)和最新的Node.js LTS版本都提供了spread运算符和rest参数。
完整兼容性表:Spread operator,Rest parameters
答案 1 :(得分:5)
第一次使用可以使用Array.slice(arguments)
完成(杂乱)。
第二种方法可以使用函数的.apply()
方法完成。