Javascript不熟悉的任务构建

use*_*756 2 javascript node.js

对不起基本问题.我在javascript中找到了以下构造,我不熟悉它.你知道这个建筑是什么吗?

我已经改变了变量,但含义是一样的.

var pt = (
 5 in [1,2,3,5]?
 2:
 3 in [1,2,3]?
 1:
 7);
Run Code Online (Sandbox Code Playgroud)

看起来它检查所有条件并根据条件采取行动,但最后一步是没有条件,这样的事情?

Den*_*ret 6

这使用三元条件运算符in运算符.它可以这样写:

var pt;
if (5 in [1,2,3,5]) { // is there an element with index 5 ?
   pt = 2;
} else if (3 in [1,2,3]) {
   pt = 1;
} else {
   pt = 7;
}
Run Code Online (Sandbox Code Playgroud)

但这看起来更像是一个谜题而不是合法的代码.这特别看起来像一个陷阱:

5 in [1,2,3,5]
Run Code Online (Sandbox Code Playgroud)

大多数程序员不会把它的是什么:5存在的测试作为重点(见).所以它false(但3 in [1,2,3,5]true).

整体相当于

var pt = 7;
Run Code Online (Sandbox Code Playgroud)