Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 作业结构_Javascript_Node.js - Fatal编程技术网

Javascript 作业结构

Javascript 作业结构,javascript,node.js,Javascript,Node.js,对不起,基本问题。我在javascript中发现了以下结构,但我并不熟悉。你知道这是什么建筑吗 我改变了变量,但意思是一样的 var pt = ( 5 in [1,2,3,5]? 2: 3 in [1,2,3]? 1: 7); 看起来它会检查所有条件并根据条件采取行动,但最后一步没有条件,类似于这样?这使用和。可以这样写: var pt; if (5 in [1,2,3,5]) { // is there an element with index 5 ? pt = 2; }

对不起,基本问题。我在javascript中发现了以下结构,但我并不熟悉。你知道这是什么建筑吗

我改变了变量,但意思是一样的

var pt = (
 5 in [1,2,3,5]?
 2:
 3 in [1,2,3]?
 1:
 7);
看起来它会检查所有条件并根据条件采取行动,但最后一步没有条件,类似于这样?

这使用和。可以这样写:

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;
}
但这看起来更像是一个谜,而不是一个合法的代码。这看起来特别像一个陷阱:

5 in [1,2,3,5]
大多数编码人员不会接受它是什么:测试是否存在5(请参阅)。所以它是
false
(但是[1,2,3,5]中的
3将是
true

整体相当于

var pt = 7;

该代码的格式极为糟糕,但经过扩展后,可转换为:

var pt;
if( 5 in [1,2,3,5]) pt = 2;
else if( 3 in [1,2,3]) pt = 1;
else pt = 7;

它只是一个三元运算符,以一种非常变形的方式编写。

这是一个条件赋值,其工作原理如下:

var pt=

如果5在[1,2,3,5]中
pt=2

else如果[1,2,3]中有3个
pt=1

else pt=7


请注意,检查给定的键是否在对象中,而不是值是否存在,因此[1,2,3,5]中的
5
为false,但[1,2,3,5]
中的
0为true

可能再加上一些括号,您就会更好地理解

var pt = (5 in [1,2,3,5]) ? 2 : ((3 in [1,2,3]) ? 1 : 7);
这基本上是一系列三元条件。这相当于:

var pt;
if(5 in [1,2,3,5])
    pt = 2;
else if(3 in [1,2,3])
    pt = 1;
else
    pt = 7;
写它

var pt = (5 in [1,2,3,5]?2:(3 in [1,2,3]?1:7));
让事情变得更清楚


这通常来自于通过服务器端脚本放入模板的第一个数字(5),但是if。。然后在JS中处理逻辑。丑陋,但效果很好。

这毫无意义,就像
var pt=7
新的ECMA是否允许[1,2,3,4,5]中的
5
?@Andy在我的测试中,它似乎对和声有效。你认为新规范中有什么特别的地方可以阻止它吗?关键是正确的。但只是一个小错误:
4 in[1,2,3,5]
将是
false
(索引是基于0的)
3 in[1,2,4,5]
将是
true
@BaliBalo是的,我读数组太快了,我读它是
4 in[1,2,3,4,5]
。。。但是没有
4
。。。就像安迪在另一篇评论中,我明白了…我在你的评论后取消了它。这似乎是一种非常糟糕的长度测试方法。我想如果它是一个字符串数组,那么解析起来可能会更容易。我很快就不用它了。回答得好。