这与将无限数量的参数传递给函数半关联:
myFunc = function () {
// process 'arguments' variable
};
myFunc.apply(null, ['string1', 'string2']);
除了console.log
是一个棘手的问题,因为如果你传递一个字符串数组,它会将数组打印到控制台。我正在拍摄的是这样的:
myConsoleLog = function () {
console.log(arguments);
};
myConsoleLog.apply(null, ['My name is %s.', 'Franco']);
Web控制台中显示的预期结果:
我的名字是Franco。
我该怎么做?
答案 0 :(得分:3)
您可以在自定义函数中使用apply
:
console.log.apply(console, arguments)
然后你可以这样称呼它:
myConsoleLog('My name is %s', 'Franco')
// or
myConsoleLog.apply(null, ['My name is %s', 'Franco'])
答案 1 :(得分:0)
console.log(arguments)
应为console.log.apply(console, arguments)
myConsoleLog = function () {
console.log.apply(console, arguments);
};
myConsoleLog.apply(null, ['My name is %s.', 'Franco']);
扩展运算符允许在需要多个参数(用于函数调用)或多个元素(用于数组文字)的位置扩展表达式。
ECMAScript ES6添加了一个新的运算符,可让您以更实用的方式执行此操作: ... Spread Operator 。不使用apply
方法的示例:
myConsoleLog = function () {
console.log(...arguments);
};
myConsoleLog(...['My name is %s.', 'Franco']);
注意如果您的浏览器仍使用ES5,则此代码段会返回语法错误。