14

在 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 中 this 的等价物是什么?

4

2 回答 2

20

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

当用于函数调用和数组声明时,这种三点语法称为扩展运算符。在函数定义中使用时,它被称为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 参数

于 2013-12-29T04:46:09.857 回答
5

第一次使用可以(混乱地)使用Array.slice(arguments).

第二个可以通过使用.apply()你的函数的方法来完成。

于 2013-12-29T05:14:29.390 回答