JavaScript函数默认参数 - 奇怪的行为

时间:2016-11-06 15:30:08

标签: javascript ecmascript-6

这是我偶尔看到的最奇怪的事情之一......

我正在使用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]()

你知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:3)

Twitter会覆盖console.log功能。