为了账号安全,请及时绑定邮箱和手机立即绑定

这个JavaScript/jQuery语法是如何工作的:(函数(窗口,未定义的){})(窗口)?

这个JavaScript/jQuery语法是如何工作的:(函数(窗口,未定义的){})(窗口)?

ITMISS 2019-06-14 15:18:56
这个JavaScript/jQuery语法是如何工作的:(函数(窗口,未定义的){})(窗口)?你有没有看过引擎盖下面jQuery 1.4源代码并注意到它是如何以下方式封装的:(function( window, undefined ) {   //All the JQuery code here    ...})(window);我读过一篇关于JavaScript命名另一个叫“一对重要的父母“所以我知道这里发生了什么。但我从未见过这种特殊的语法。那是什么undefined在那里做什么?为什么window需要被传递,然后又出现在结尾?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

其他人已经解释过undefinedundefined类似于可以将其重新定义为任何值的全局变量。这种技术是为了防止所有未定义的检查中断,如果有人写了这样的话,undefined = 10在某个地方。一个从未被通过的论点被保证是真实的。undefined而不考虑变量 undefined.

下面的示例可以说明传递窗口的原因。

(function() {
   console.log(window);
   ...
   ...
   ...
   var window = 10;})();

控制台记录了什么?价值window目标对吧?错!10?不对!它记录undefined..JavaScript解释器(或JIT编译器)以这种方式重写它-

(function() {
   var window; //and every other var in this function

   console.log(window);
   ...
   ...
   ...
   window = 10;})();

但是,如果您得到window变量作为一个参数,没有变量,因此没有惊喜。

我不知道jQuery是否在这样做,但如果您正在重新定义window函数中任何地方的局部变量,无论出于什么原因,从全局范围借用它是个好主意。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 384 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信