如何将无限量的参数传递给console.log调用?

时间:2015-06-26 20:35:40

标签: javascript function

这与将无限数量的参数传递给函数半关联:

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。

我该怎么做?

2 个答案:

答案 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,则此代码段会返回语法错误。