我刚刚使用 JQuery 插件并遇到了以下代码行:
var doAnimate = $.support.transition && animate
我确实理解短路,但这是使用短路的变量声明吗??
在询问比我更有经验的人时,我得到了以下答复:
If they loaded the transition library, use it, otherwise use animate.
我猜返回的值不是 true 或 false ,因为我听说短路不会返回 true 或 false 。
那么,如果 $.support.transition
未定义,animate 会存储在 doAnimate
中吗?
是这样的吗?我对这个变量声明及其工作原理感到非常困惑。我确实理解条件语句中的短路。
最佳答案
"If they loaded the transition library, use it, otherwise use animate."
他们的意思是使用 ||
运算符。
var doAnimate = $.support.transition || animate;
上面的作用是,它检查$.support.transition
是否可用,或已加载,使用它,否则使用animate
。
当我们执行expr1 && expr2
时,如果为假,则返回expr1
;否则,返回expr2
。
因此,当您执行 var doAnimate = $.support.transition && animate;
时,如果 $.support.transition
未加载或 未定义
,doAnimate
将仍然保留$.support.transition
,而不是animate
。
如果已加载,则将使用animate
。这与你想要的相反。这就是 ||
发挥作用的地方。
当我们执行expr1 || 时expr2
如果它是 truthy,则返回 expr1
;否则,返回expr2
。
因此,当我们使用 ||
时,如果 $.support.transition
已加载,则将使用它,否则将使用 animate
.
关于javascript - 使用短路的变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911928/