gpt4 book ai didi

javascript - 为什么此 Javascript 行只包含函数名称和函数调用?

转载 作者:行者123 更新时间:2023-11-28 11:36:30 26 4
gpt4 key购买 nike

我正在阅读 Twitter Bootstrap Tabs Plugin 的源代码有一行似乎是某些东西的缩写,但我不明白它是什么。以下是源代码片段(版本 3.0.0):

Tab.prototype.activate = function (element, container, callback) {
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
&& $active.hasClass('fade')

function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')

// some code removed for conciseness

callback && callback()
}

有问题的行是这样的:callback && callback() .

我从来没有见过像这样输入函数或变量名,然后在&&之后调用函数。运算符。

我猜这是简写。它是什么以及它的用途是什么?它是如何工作的?

最佳答案

它是

的简写
if (callback)
{
callback();
}

基本上,如果第一部分为 null(或未定义),两者都等于 false,则 &&(逻辑与)会失败并且不会执行任何操作。

如果定义了回调,则 && 的第一部分为 true,因此它会计算第二部分(在本例中调用该方法)。

这被称为短路,因为逻辑 AND 运算符左侧的初始 false 意味着它不会尝试计算右侧表达式的第二部分(因为它已经没有通过“一切都是真的”的测试)。注意:并非所有语言都在逻辑 AND 表达式中实现短路(VB 不是从内存中实现的),但 javascript 是明智的语言之一! :)

对于那些关心未定义、空和 0 检查的细节的人:

http://www.sitepoint.com/javascript-truthy-falsy/

*免责声明:代码示例故意简单,并由训练有素的特技编码人员执行。请不要在家尝试此操作。这是危险的,可能会导致否决:)

关于javascript - 为什么此 Javascript 行只包含函数名称和函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18956157/

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