以下是来自jquery的一些源代码,即来自处理动画的函数jQuery.speed:
jQuery.speed = function( speed, easing, fn ) {
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
complete: fn || !fn && easing || jQuery.isFunction( speed ) && speed,
duration: speed,
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
};
/*SOME OTHER CODE*/
};
“opt”定义发生了什么?我得到第一行说“opt等于:如果速度是一个对象,则速度扩展,或者如下定义的新对象”。但是,例如,对象文字中“完整”的属性定义呢?我知道有三个条件,但它似乎并没有说明如果满足任何条件会发生什么。据我所知,它说“如果fn存在,则完成= fn;否则,如果没有fn但存在缓和,则完成=缓动(但为什么?);否则,如果速度是函数,则完全等于速度(再次,它在哪里指定速度)?“这三个属性定义对我来说非常混乱。