Javascript TypeError:console.log.apply上的非法调用

Javascript TypeError:console.log.apply上的非法调用,javascript,google-chrome,console,Javascript,Google Chrome,Console,如果在chrome控制台中运行此操作: console.log.apply(null, [array]) Chrome会返回一个错误: // TypeError: Illegal Invocation 为什么??(通过OSX在Chrome 15上测试)当执行上下文从控制台更改为任何其他对象时,它可能不起作用: 这是预期的,因为console.info预期其“This”引用为 是控制台,不是窗口 console.info("stuff") stuff undefined console.inf

如果在chrome控制台中运行此操作:

console.log.apply(null, [array])
Chrome会返回一个错误:

// TypeError: Illegal Invocation

为什么??(通过OSX在Chrome 15上测试)

当执行上下文从控制台更改为任何其他对象时,它可能不起作用:

这是预期的,因为console.info预期其“This”引用为 是控制台,不是窗口

console.info("stuff")
stuff
undefined
console.info.call(this, "stuff")
TypeError: Illegal invocation
console.info.call(console, "stuff")
stuff
undefined
这种行为是意料之中的


如果需要用作函数,可以使用console.info.bind(console),也可以在所有支持ES5的浏览器中使用
console.info.call(console,“stuff”)
?apply也是一样:
console.info.apply(console,arguments)
相同的参数适用于其他函数,如console.log()和document.writeln()。因此,如果使用call()或apply(),请始终提供正确的执行上下文。或者,如@JohnWilliams所指出的,使用bind()。当DevTools F12未打开时,这仍然适用于IE11/Edge。