javascript调用长度可变的console.log函数

javascript调用长度可变的console.log函数,javascript,Javascript,我想用可变长度参数调用console.log函数 function debug_anything() { var x = arguments; var p = 'DEBUG from ' + (new Error).stack.split("\n")[2]; switch(x.length) { case 0: console.log(p); break; case 1: console.log(p,x[0]); break; case 2: console.

我想用可变长度参数调用console.log函数

function debug_anything() {
  var x = arguments;
  var p = 'DEBUG from ' + (new Error).stack.split("\n")[2];
  switch(x.length) {
    case 0: console.log(p); break;
    case 1: console.log(p,x[0]); break;
    case 2: console.log(p,x[0],x[1]); break;
    case 3: console.log(p,x[0],x[1],x[2]); break;
    case 4: console.log(p,x[0],x[1],x[2],x[3]); break;
    // so on..
  }
}
还有(更短的)其他方法吗, 请注意,我不想要这个解决方案 (因为将输出x对象(参数或数组)的其他方法

console.log(p,x);

只需加入数组

function debug_anything() {
  var x = Array.prototype.slice.call(arguments, 0);
  var p = 'DEBUG from ' + (new Error).stack.split("\n")[2];

  console.log(p, x.join(', '));
}

是的,您可以使用
apply

console.log.apply(console, /* your array here */);
完整代码:

function debug_anything() {
  // convert arguments to array
  var x = Array.prototype.slice.call(arguments, 0);

  var p = 'DEBUG from ' + (new Error).stack.split("\n")[2];

  // Add p to the beggin of x
  x.unshift(p);
  // do the apply magic again
  console.log.apply(console, x);
}

错误!未捕获类型错误:Function.prototype.apply:参数列表有错误type@KiswonoPrayogo:因为
.call
,而不是
。apply
。和
控制台
,而不是
这个
@kiswoonoprayogo我做了一个更好的例子来修复它。@kiswoonoprayogo抱歉,但是对于日志工作,需要将
控制台
作为上下文传递。它现在就可以工作了,如果你想的话,你不需要将参数转换成数组,但是如果你使用数组更好,那就必须是数组heheERROR:Uncaught TypeError:Object#没有方法“join”+1我喜欢你的代码风格,和我的代码风格一样,但是很时髦!请看我的答案。你好,Hans
function debug_anything() {
  var x = arguments;
  var p = 'DEBUG from ' + (new Error).stack.split("\n")[2];
    console.log.apply(console, [p].concat(Array.prototype.slice.call(x)));
}