Ale*_*nik 3 javascript ternary-operator
我刚刚浏览了 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;
},
Run Code Online (Sandbox Code Playgroud)
现在我明白了十进制运算符是如何工作的,但是有人可以告诉我,下面的代码行是如何工作的?它甚至是三元运算符吗?
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
Run Code Online (Sandbox Code Playgroud)
或者它是 JS 中的某种新构造?
谢谢。
亚历克斯-Z。
原声明:
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
Run Code Online (Sandbox Code Playgroud)
为了更好地理解它,
i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0;
// ^ ^
Run Code Online (Sandbox Code Playgroud)
是的,这是嵌套的 。ternary operator
? :
以下是if else
上述语句的表示,按if..else
步骤表示。
if (i) {
i = i < 0 ? Math.max(0, len + i) : i;
} else {
i = 0;
}
Run Code Online (Sandbox Code Playgroud)
其工作原理如下:
if (i) {
if (i < 0) {
i = Math.max(0, len + i);
} else {
i = i;
}
} else {
i = 0;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1952 次 |
最近记录: |