javascript - 使用短路的变量声明

标签 javascript jquery

我刚刚使用 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 .

More on logical operators on MDN

关于javascript - 使用短路的变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911928/

相关文章:

javascript - "Unexpected end of input"- 代码学院剪刀石头布

javascript - D3和双向数据绑定(bind)

javascript - 检查 li 列表中的每个类并删除所有其他类

jquery - 在日历中的特定日期之后更改背景颜色

javascript - 如何使用 JavaScript 计算鼠标的特定移动

javascript - Babel 不转译从 'node_modules' 导入的模块

javascript - GridLayout ListView 的渲染非常慢 - WinJS

javascript - 使用javascript上传多个文件

javascript - jQuery : hide rows in table based on column data

javascript - 使用 jQuery 的编程挑战