Почему я не могу передать console.log в качестве аргумента обратного вызова в Chrome (и Safari)?
Следующий фрагмент выдаст ошибку в 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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Почему это происходит?
Примечание: мой вопрос не совпадает сэтот вопрос.
ОбновитьСпасибо за комментарии и ответ на использованиеconsole.log
в качестве обратного вызова нужно сделать
makePromise().then(console.log.bind(console));