这是我偶尔看到的最奇怪的事情之一......
我正在使用JavaScript默认参数,并且很想知道它们是否在考虑到函数执行的上下文后得到解决。
我准备了这个简单的测试:
var o = {
a: 42,
fn(b = this.a) {
console.log(b);
}
};
o.fn();
正如您所看到的,我最初的问题的答案是肯定的。
如果您将代码段复制并粘贴到开发工具中,您将获得相同的结果...除非您在访问twitter.com时打开开发工具;在这种情况下,结果是undefined
。
如果主机对象是数组
,我也会遇到相同的行为
var arr = [
42,
function fn(b = this[0]) {
console.log(b);
}
];
arr[1]()
你知道为什么会发生这种情况吗?
答案 0 :(得分:3)
Twitter会覆盖console.log
功能。