Javascript var cl=console.log不';行不通

Javascript var cl=console.log不';行不通,javascript,Javascript,我在Angular应用程序中做到了这一点: var cl = console.log; cl(123); 但是,我收到了以下错误消息: Uncaught TypeError: Illegal invocation 这发生在Chrome中。它在Nodejs中工作 我很困惑。它是非法代码吗?cl仅引用log()方法log()期望控制台作为上下文,但获取窗口。要解决此问题,请将控制台绑定为上下文: var cl=console.log.bind(console); cl(“你好”)改为尝试var

我在Angular应用程序中做到了这一点:

var cl = console.log;
cl(123);
但是,我收到了以下错误消息:

Uncaught TypeError: Illegal invocation
这发生在Chrome中。它在Nodejs中工作


我很困惑。它是非法代码吗?

cl
仅引用
log()
方法
log()
期望
控制台
作为上下文,但获取
窗口
。要解决此问题,请将
控制台
绑定为上下文:

var cl=console.log.bind(console);

cl(“你好”)改为尝试
var cl=console.log.bind(console)
。谢谢,但是我的代码有什么问题吗?在链接的问题中详细解释了。有许多重复项。长话短说,
console.log的实现取决于运行的上下文方法。这意味着
内部需要是
控制台
对象,而不是其他对象。因此,您应该只在
console
对象的上下文中运行
console.log
方法。当您分配
var log=console.log
时,会发生的情况是,您将函数从源代码分离,而它只是释放了上下文。@ElgsQianChen:您使用错误的
this
调用它。谢谢,但是我的代码怎么了?@ElgsQianChen更新了答案谢谢。现在我明白了为什么。:)