以下两种自执行函数的写法有什么区别?

  1. (fn)()
  2. (0,fn)()

我试了下,发现好像执行的结果都是一样的,为什么第二种写法要加个0?这样写有什么作用,或者说出于什么考虑?

阅读 1.7k
2 个回答
var a = {
  foo: function() {
    console.log(this === window);
  }
};

a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console

大概就是这样一个区别

参考:https://stackoverflow.com/que...

(0,fn)()等同于

var tmpFunc = fn;
tmpFunc();

这里面涉及逗号运算符的规则
把this指向window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题