最近我正在阅读其他人的代码,并发现了这个:
// Semicolon (;) to ensure closing of earlier scripting // Encapsulation // $is assigned to jQuery ;(function($) { // DOM Ready $(function() { ... }); })(jQuery);
我理解领先的观点;,我理解$(function(){与文档准备相同,但添加函数($)的重点是什么?
我知道它是一个闭包,但由于它总是在全局范围内调用,所以看起来你不需要打扰它. $(function(){将使用相同的全局对象,不是吗?
它是为了防范某些事情,还是出于其他原因的最佳做法?
解决方法
这是jQuery插件的常见结构.它可以防止已被覆盖的$标识符用于其他内容.在匿名函数中,$总是引用jQuery.
例:
$= "oh no"; $(function() { //Big problem! //DOM ready });
通过引入新范围,您可以确保$引用您期望的内容:
$= "oh no"; (function($) { //New scope,$is redeclared and jQuery is assigned to it $(function() { //No problem! //DOM ready }); }(jQuery));
其背后的主要原因是许多其他JavaScript库使用$作为标识符(例如PrototypeJS).如果你想同时使用Prototype和jQuery,你需要让Prototype拥有它的$identifier,但是你可能不希望每次想要调用jQuery方法时都写出jQuery.通过引入一个新的作用域,您可以让jQuery在该执行上下文中获得它的$.
原文地址:https://www.jb51.cc/jquery/158858.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。