为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以向JavaScript函数发送可变数量的参数?

是否可以向JavaScript函数发送可变数量的参数?

慕容708150 2019-08-03 07:03:21
是否可以向JavaScript函数发送可变数量的参数?可以从数组向JavaScript函数发送可变数量的参数吗?var arr = ['a','b','c']var func = function(){     // debug      alert(arguments.length);     //     for(arg in arguments)         alert(arg);}func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'func(arr); // prints 1, then 'Array'我最近写了很多Python,能够接受varargs并发送它们是一个很好的模式。G.def func(*args):    print len(args)    for i in args:        print i func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'func(*arr) // prints 4 which is what I want, then 'a','b','c','d'是否可以在JavaScript中发送待处理的数组如参数数组?
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

实际上,您可以将任意数量的值传递给任何javascript函数。显式命名的参数将获得前几个值,但所有参数都将存储在参数数组中。

要以“解压缩”形式传递参数数组,可以使用Apply,如(c.f)。功能Javascript):

var otherFunc = function() {
   alert(arguments.length); // Outputs: 10}var myFunc = function() {
  alert(arguments.length); // Outputs: 10
  otherFunc.apply(this, arguments);}myFunc(1,2,3,4,5,6,7,8,9,10);



查看完整回答
反对 回复 2019-08-05
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这个飞溅蔓延操作符是ES6的一部分,ES6是Javascript计划的下一个版本。到目前为止,只有Firefox支持它们。此代码在FF 16+中工作:

var arr = ['quick', 'brown', 'lazy'];var sprintf = function(str, ...args){
    for (arg of args) {
        str = str.replace(/%s/, arg);
    }
    return str;}sprintf.apply(null, ['The %s %s fox jumps over the %s dog.', ...arr]);
    sprintf('The %s %s fox jumps over the %s dog.', 'slow', 'red', 'sleeping');

注意扩展的笨拙语法。的常用语法sprintf('The %s %s fox jumps over the %s dog.', ...arr);尚未得到支持..你可以找到这里有一个ES6兼容性表.

还请注意for...of,另一个ES6加成。使用for...in数组是坏主意.




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 245 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号