= 0 && count++"有什么作用?-6ren"> = 0 && count++"有什么作用?-我正在消磨时间阅读 underscore.string函数,当我发现这个奇怪的速记时: function count (str, substr) { var count = 0, index; -6ren">
gpt4 book ai didi

javascript - 速记 "index >= 0 && count++"有什么作用?

转载 作者:行者123 更新时间:2023-12-03 13:13:23 26 4
gpt4 key购买 nike

我正在消磨时间阅读 underscore.string函数,当我发现这个奇怪的速记时:

function count (str, substr) {
var count = 0, index;
for (var i = 0; i < str.length;) {
index = str.indexOf(substr, i);
index >= 0 && count++; //what is this line doing?
i = i + (index >= 0 ? index : 0) + substr.length;
}
return count;
}

法务:在使用上述功能之前要三思而不会归功于 underscore.string

我把这条线单独放在这里,所以你不会浪费时间去寻找它:
index >= 0 && count++;

我从未见过类似的东西。我对正在做什么一无所知。

最佳答案

index >= 0 && count++;

第一部分: index >= 0
如果 index 返回真具有大于或等于 0 的值.

第二部分: a && b
大多数 C 风格的语言都是 bool 值的快捷方式 ||&&运营商。

对于 ||操作,你只需要知道第一个操作数是 true整个操作将返回 true .

对于 &&操作,你只需要知道第一个操作数是 false整个操作将返回 false .

第三部分: count++ count++相当于 count += 1相当于 count = count + 1
现在都在一起了

如果该行的第一个操作数 ( index >= 0 ) 计算为 true ,第二个操作数 ( count++ ) 将计算,所以它相当于:
if (index >= 0) {
count = count + 1;
}

JavaScript 的细微差别

JavaScript 与其他 C 风格语言的不同之处在于它有 truthy 的概念。和 falsey值。如果一个值计算为 false , 0 , NaN , "" , null , 或 undefined ,是 falsey ;所有其他值都是 truthy .
||&& JavaScript 中的运算符不返回 bool 值,它们返回最后执行的操作数。
2 || 1将返回 2因为第一个操作数返回了 truthy值(value), true或其他任何东西都将始终返回 true,因此不需要执行更多操作。或者, null && 100将返回 null因为第一个操作数返回了 falsey值(value)。

关于javascript - 速记 "index >= 0 && count++"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319915/

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