gpt4 book ai didi

javascript - 理解 Complex inArray 三元运算符

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

我刚刚浏览了 inArray 方法代码并遇到了以下内容::

inArray: function (elem, arr, i) {
var len;

if (arr) {
if (indexOf) {
return indexOf.call(arr, elem, i);
}

len = arr.length;
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

for (; i < len; i++) {
// Skip accessing in sparse arrays
if (i in arr && arr[i] === elem) {
return i;
}
}
}

return -1;
},

现在我明白了三元运算符是如何工作的,但是有人能告诉我,下面这行代码是如何工作的吗?它甚至是三元运算符吗?

i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;

或者它是 JS 中的某种新结构?

谢谢。

亚历克斯。

最佳答案

原始声明:

i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

为了更好地理解它,

i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0;
// ^ ^

是的,这是嵌套 ternary operator ? :

以下是if else上述语句的表示,在 if..else 中逐步表示。

if (i) {
i = i < 0 ? Math.max(0, len + i) : i;
} else {
i = 0;
}

它的工作原理如下:

if (i) {
if (i < 0) {
i = Math.max(0, len + i);
} else {
i = i;
}
} else {
i = 0;
}

关于javascript - 理解 Complex inArray 三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934217/

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