我知道通过arguments对象可以实现这样的功能,但是除了这个方法还有别的方法吗?,因为我发现书上并不推荐使用arguments对象,在严格模式下也做了一下限制,而且 ECMAscript 6 就不再存在arguments对象了(來源請求).
arguments
《javascript 高级程序设计第 3 版》 703 页
Harmony 中不再有 arguments 对象,因此也就无法通过它来读取到未声明的参数
附: 版本:2012 年 (其中對 ES6 的描述可能已過時)
学习是最好的投资!
严格模式只是限制不能用arguments.callee arguments.caller,不能用arguments作为变量名,并没有限制arguments作为不定参数的应用,在ES6普及之前,没有arguments的替代品
arguments.callee
arguments.caller
印象中并没有,可以将所有参数放到一个对象里面传这个对象进函数达到类似的效果,比如:
function fn(obj) { switch(obj.length){ case 3: return obj.length; break; default: return false; break; } } fn({ first: 1, second: 2, third: 3 });
当然到了 ES6 就支持你说的不定参数啦,参考资料:http://es6.ruanyifeng.com/#docs/function
我一般这样写
function log(o){ console.log(o.xx) } log({ o.xx })
es6就更方便啦
function foo(...args) { console.log(args); }
严格模式只是限制不能用
arguments.callee
arguments.caller
,不能用arguments
作为变量名,并没有限制arguments作为不定参数的应用,在ES6普及之前,没有arguments的替代品印象中并没有,可以将所有参数放到一个对象里面传这个对象进函数达到类似的效果,比如:
当然到了 ES6 就支持你说的不定参数啦,参考资料:http://es6.ruanyifeng.com/#docs/function
我一般这样写
es6就更方便啦