从jQuery.scrollTo.js库中查看此块(在第184行的v1.4中).
function animate( callback ){
$elem.animate( attr, duration, settings.easing, callback && function(){
callback.call(this, target, settings);
});
};
Run Code Online (Sandbox Code Playgroud)
很想知道比较是如何工作的
callback && function() {callback.call(...)};
Run Code Online (Sandbox Code Playgroud)
这究竟是什么背后的含义.提前致谢.
这callback && function() {callback.call(...)};是做两件事:
callback已定义和JavaScript具有称为"短路逻辑表达式"的功能.如果逻辑表达式的一部分无法更改整体结果,则不会对其进行求值.
如果callback是undefined,那么它在逻辑表达式的上下文中计算为false(它是"falsy").所以表达式相当于false && ...,在这种情况下它实际上不再重要...,结果总是错误†1....在这种情况下,JavaScript并没有考虑.
如果callback是没有 undefined的(但功能),逻辑表达式的第一部分的计算结果为真(它的"truthy").此时JavaScript评估了....总体结果恰好是函数表达式.函数表达式产生一个匿名函数,然后传递给jQuery animate().
的callback.call()执行callback 和确定的含义this内callback.因此callback.call(this),请确保this引用与外部函数中相同的对象.
†1 绝对正确:表达式的总体结果不会是false,它将是undefined.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |