内容简介:翻译自:https://stackoverflow.com/questions/3846636/understanding-jquery-source-code
,并在JQuery中遇到了这个代码构造.
(function( window, undefined ) {
})(window)
阅读堆栈溢出(和其他地方)我得出结论,这是相同的
function foo(window, undefined) {
...
}
foo(window);
我的假设是否正确?
如果是这样,前者的优势是什么? (除了令人困惑的新手)
要理解它,您需要了解一些事项:
>这是一个匿名函数,只是意味着它没有名称.
>声明声明后立即调用该函数.在函数定义之后,您会在第2行看到左括号?这意味着,“调用此函数”.
>只有一个参数传递给函数.该参数是“window”,它是浏览器内部全局范围的名称.
>被调用的函数实际上需要* 2 *参数,但我们用一个调用它. Javascript允许您使用比函数实际预期更多或更少的参数调用函数.有一些方法可以获取传递的参数列表.
>由于我们只传递一个参数,第二个参数将自动设置为“未定义”. “undefined”是一个特殊的javascript值,表示准备好,“未定义”.
>恰巧我们还将名称为“undefined”的第二个参数命名为.因此,实际上,我们创建了一个名为undefined的局部变量(参数非常类似于局部变量),其值未定义.
>为什么我们在地球上这样做?这是一种确保在我们的匿名函数中,如果我们引用“未定义”,它确实具有“未定义”值的方法.如果我们不这样做,并且我们范围之外的一些疯狂代码重新定义为“未定义”(通过说“undefined = 42”之类的东西),那么我们编写代码思维我们指的是未定义但我们实际上是参考42.这些恶作剧传递1个参数,但期望2,并且调用第二个参数未定义,保护我们免受这种无意义.
我希望这很清楚,如果不是,请告诉我.我从上面提到的Paul Irish的视频中学到了所有这些.
翻译自:https://stackoverflow.com/questions/3846636/understanding-jquery-source-code
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00
As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!