gpt4 book ai didi

javascript - jQuery:以下代码块中比较的含义是什么 - callback && function() {callback.call();}

转载 作者:搜寻专家 更新时间:2023-11-01 05:02:18 26 4
gpt4 key购买 nike

jQuery.scrollTo.js 库中看到这个 block (在 v1.4 的第 184 行)。

function animate( callback ){
$elem.animate( attr, duration, settings.easing, callback && function(){
callback.call(this, target, settings);
});
};

很想知道比较将如何进行

callback && function() {callback.call(...)}; 

这背后的确切含义是什么。提前致谢。

最佳答案

callback && function() {callback.call(...)}; 做了两件事:

  • 测试是否定义了一个回调
  • 如果有,在正确的上下文中调用它

JavaScript 有一个特性叫做“短路逻辑表达式”。如果逻辑表达式的一部分不能改变整体结果,则不会对其求值。

如果 callbackundefined,那么它在逻辑表达式的上下文中计算为 false(它是 “falsy”)。所以表达式等同于 false && ...,在这种情况下,... 实际是什么不再重要,结果将始终为 false †1。在这种情况下,JavaScript 不会查看 ...

如果 callback 不是 undefined(而是一个函数),逻辑表达式的第一部分计算为真(它是 “真实”)。此时 JavaScript 计算 ...。整体结果恰好是一个函数表达式。函数表达式产生一个匿名函数,然后传递给 jQuery 的 animate()

callback.call() 执行callback 确定callback 中this 的含义。所以 callback.call(this) 确保 this 引用与外部函数中相同的对象。


†1 绝对正确:表达式的整体结果不会是false,而是undefined

关于javascript - jQuery:以下代码块中比较的含义是什么 - callback && function() {callback.call();},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com