因为我很懒,我创建的函数log
基本上只是以下的缩写console.log
:
function log() {
console.log.apply(console, arguments);
}
Run Code Online (Sandbox Code Playgroud)
每当我打电话给我时,我会在Google Chrome的开发者工具中看到记录的项目,右侧是记录项目的行号.但是,此行号始终相同,因为实际console.log
调用位于代码中的某个特定位置(即我声明上述log
函数的位置).
我也尝试过的只是:
var log = console.log;
Run Code Online (Sandbox Code Playgroud)
但这总是会引发错误:Illegal invocation
.很奇怪,但我猜这不可能.
如何console.log
使用开发者工具显示log
调用的行号而不是实际console.log
调用的位置来创建快捷方式?
以下代码段会在Chrome(和Safari)中生成错误,但在Firefox中可以使用.
我希望在javascript控制台中显示2个数字,但在Chrome中我只得到第一个然后是 Uncaught TypeError: Illegal invocation
// a generic promise that return a random float
var makePromise = function() {
return $.Deferred().resolve(Math.random());
}
// This works in all browsers
makePromise().then(function(d) {
console.log(d);
});
// This works in firefox only
makePromise().then(console.log);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
旁注:我的问题与这个问题不一样.
感谢评论和回答console.log
用作回调,我们需要做
makePromise().then(console.log.bind(console));
Run Code Online (Sandbox Code Playgroud)