我一直在为jQuery"jQueryLog"开发一个插件,以便调试链选择器和返回值.如果你想查看它,你可以在这里做
这已经是第二个版本了.第一个版本实际上是一个编辑过的jQuery,在做这个时我不得不阅读jQuery来了解内部的工作原理.问题来自那里:
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// A central reference to the root jQuery(document)
rootjQuery,
// A simple way to check for HTML strings or ID strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
(...)
Run Code Online (Sandbox Code Playgroud)
使用声明链+"逗号"而不仅仅是使用以下是否有任何重要原因:
function jQuery ( selector, context ) { ... }
var _jQuery = window.jQuery;
var _$ = window.$;
etc...
Run Code Online (Sandbox Code Playgroud)
我在这里看到的唯一原因是缩小器具有不能减少的文字.但还有其他原因吗?
这只是将所有变量保留在函数范围内的一种较短方法,同时确保它们在定义之前不被使用.
在JavaScript Patterns(2010年9月,O'Reilly)中,Stoyan Stefanov将其称为单一var模式:
JavaScript允许您在函数中的任何位置具有多个var语句,并且它们都像在函数顶部声明变量一样.此行为称为提升....您使用一个var语句并声明由逗号分隔的多个变量.在声明变量时使用初始值初始化变量也是一种很好的做法.这可以防止逻辑错误(所有未初始化和声明的变量都使用该值初始化
undefined),并且还可以提高代码可读性.
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |