@
czheo 分号的坑不足三个,也算门槛吧,你可以选择全部加分号啊,没人拦着。
var a = 1; a++ 。这不就是同步的吗?实际上所有的方法都有同步版本,只是IO不推荐同步,所以调用起来不那么方便。
jQuery.extend 的核心代码也就这么几行:
for ( ; i < length; i++ ) {
if ( (options = arguments[ i ]) != null ) {
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
if ( target === copy ) {
continue;
}
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray(src) ? src : [];
} else {
clone = src && jQuery.isPlainObject(src) ? src : {};
}
target[ name ] = jQuery.extend( deep, clone, copy );
} else if ( copy !== undefined ) {
target[ name ] = copy;
}
}
}
}
其大部分都是在处理「对调用者的友好性」和错误处理,所以没什么好喷的,加上现在 ES6 出了 Object.create,友好性又大大加强了。