将变量参数传递给函数
Passing variable arguments to function
我设置了一个带有可变参数的函数:
myfunc: (cmd, args...)->
# cmd is a string
# args is an array
可以称为:
myfunc("one") # cmd = "one", args = undefined
myfunc("one","two") # cmd = "one", args = ["two"]
# etc...
现在,如果我想用未知数量的自变量来调用它,该怎么办?假设我想传递一个args数组而不是arg1, arg2, arg3,..
,这怎么可能?
尝试myfunc("one",["two","three"])
或myfunc("one",someArgs)
会导致不幸:
# cmd = "one"
# args = [ ["two","three"] ];
想法?
p.S.我通过在函数中添加这些超简单的行来实现这一点。但是没有别的办法吗?
if args? and args[0] instanceof Array
args = args[0]
您不需要手动使用Function.prototype.apply
。Splats可以用于参数列表以构建数组,也可以用于函数调用以扩展数组;来自精细手册:
飞溅
[…]CoffeeScript为函数定义和调用提供了splats
...
,使可变数量的参数更容易接受。awardMedals = (first, second, others...) -> #... contenders = [ #... ] awardMedals contenders...
所以你可以这样说:
f('one')
f('one', 'two')
f('one', ['two', 'three']...)
# same as f('one', 'two', 'three')
args = ['where', 'is', 'pancakes', 'house?']
f(args...)
# same as f('where', 'is', 'pancakes', 'house?')
正确的事情就会发生。
演示:http://jsfiddle.net/ambiguous/ztesehsj/
使用Function.apply
:
myfunc.apply @, [ "one", "two", "three" ]
CoffeeScript.org 上的演示
相关文章:
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 作为函数参数传递的匿名函数的范围
- 通过函数参数传递id
- 将数组值作为函数参数传递
- 是否需要初始化在 Javascript 中作为“类”构造函数参数传递的变量
- JavaScript 函数参数传递数组
- Angular2 将函数参数传递给构造函数
- 为什么我不能将角度变量作为函数参数传递
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- 停止对作为函数参数传递到新列表的对象引用
- 在 JavaScript 中将数组作为内置函数参数传递
- AngularJS将范围变量名称作为函数参数传递
- Javascript 将对象作为函数参数传递
- 在对象上调用方法或将对象作为函数参数传递的差异
- 正确的方法:始终将所有变量作为函数参数传递
- 如何将动态创建的复选框值作为函数参数传递
- 节点简斯 |将对象作为函数参数传递
- 什么是将对象属性作为函数参数传递的良好策略/模式
- 将对象作为函数参数传递.不确定如何访问这些值
- 为什么我们要将函数参数传递到$scope$申请