我记得总是当我想要通过时console.log
作为某个函数的回调参数,除非我使用bind()
绑定方法console
to it.
例如:
const callWithTest = callback => callback('test');
callWithTest(console.log); // That didn't use to work.
callWithTest(console.log.bind(console)); // That worked (and works) fine.
See 未捕获的类型错误:javascript 中的非法调用 https://stackoverflow.com/q/8904782/3853934.
然而,最近我注意到console.log()
即使在控制台以外的对象上调用也能正常工作。例如:
console.log.call(null, 'test');
logs 'test'
.
它何时以及为何改变?规范中有相关说明吗?
控制台 API 编辑草稿 https://web.archive.org/web/20160404005430/https://github.com/DeveloperToolsWG/console-object/blob/master/api.md以前说:
日志 API 应该都是可调用函数,允许它们作为参数传递给错误处理回调、forEach 方法等。
这不再包含在规范的当前版本 https://console.spec.whatwg.org/.
我认为 Chrome 和 Node.js 将其更改为像规范中那样工作,但似乎在它之前就已经这样工作了。
我仍然很好奇它是什么时候改变的以及原因是什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)