Javascript 与旧项目进行对比,并找到我不知道的代码';我不明白
我不懂下面的代码,请给我解释一下Javascript 与旧项目进行对比,并找到我不知道的代码';我不明白,javascript,Javascript,我不懂下面的代码,请给我解释一下 我很抱歉这看起来很奇怪,但我必须理解 reverse = [-1, 1][+!!reverse]; 让我们假设reverse=5,然后!5为假因为除0之外的每个数字都是thruty,现在如果我们再次求反!false我们得到true并最终使用+将布尔表达式转换为1或0 var reverse = 5; reverse = [-1, 1][+!!reverse]; 与 var reverse = 5; reverse = [-1, 1][1]; 更明确地说,可
我很抱歉这看起来很奇怪,但我必须理解
reverse = [-1, 1][+!!reverse];
让我们假设
reverse=5
,然后!5
为假
因为除0之外的每个数字都是thruty,现在如果我们再次求反!false
我们得到true
并最终使用+
将布尔表达式转换为1或0
var reverse = 5;
reverse = [-1, 1][+!!reverse];
与
var reverse = 5;
reverse = [-1, 1][1];
更明确地说,可能是:
var reverse = 5;
reverse = [-1, 1][Number(Boolean(reverse))];
让我们假设
reverse=5
,然后!5
为假
因为除0之外的每个数字都是thruty,现在如果我们再次求反!false
我们得到true
并最终使用+
将布尔表达式转换为1或0
var reverse = 5;
reverse = [-1, 1][+!!reverse];
与
var reverse = 5;
reverse = [-1, 1][1];
更明确地说,可能是:
var reverse = 5;
reverse = [-1, 1][Number(Boolean(reverse))];
!!反向
将变量转换为布尔值
+!!反向“
将其转换为数字(0或1)
该数字用作左侧数组的索引
因此,如果原始值为falsy,则整个语句将reverse
设置为-1;如果原始值为truthy,则整个语句将设置为1
纠正上述陈述的更简单方法是
reverse=反向?1:-1;代码>!!反向
将变量转换为布尔值
+!!反向“
将其转换为数字(0或1)
该数字用作左侧数组的索引
因此,如果原始值为falsy,则整个语句将reverse
设置为-1;如果原始值为truthy,则整个语句将设置为1
纠正上述陈述的更简单方法是
reverse=反向?1:-1;代码>好吧,这是一个自称聪明的人写的,但他忘了伟大的代码不仅速度快,而且容易阅读
第一部分
[-1,1]
构造一个数组,索引0处为-1,索引1处为1
!!reverse
将反向转换为真正的布尔值
+运算符的一元版本(一元运算符是只接受一个参数的运算符)将反转的布尔版本转换为数字
这意味着,如果reverse是真实的,reverse将被更改为1,而如果它是falsy,它将被更改为-1。好的,这是由一位自称相当聪明的人写的,但他忘记了伟大的代码不仅速度快,而且容易阅读
第一部分
[-1,1]
构造一个数组,索引0处为-1,索引1处为1
!!reverse
将反向转换为真正的布尔值
+运算符的一元版本(一元运算符是只接受一个参数的运算符)将反转的布尔版本转换为数字
这意味着,如果reverse是真的,reverse将被更改为1,而如果它是假的,它将被更改为-1。挥动魔杖并说“显示更多代码”,这似乎使用了一个名为reverse的变量,如果它是真的-y,它将成为数字1,如果它是假的-y,它将成为-1。如果你能为这一行提供更多的上下文,我相信有人会给出一个更准确的答案。我理解!!什么也不做,因为它忽略了两次,对吗?+将其从真|假值转换为0或1。还有!!什么都不做,第一个代码>检查它是否为假,然后第二个代码>翻转答案。如果您只有反转的真/假值,那么它似乎什么也不做。但是你可以看到,如果你使用非真/假值进行反转,它确实会产生影响。挥动魔杖,说“显示更多代码”,这似乎是使用了一个称为反转的变量,如果它是真的,它将成为数字1,如果它是假的,它将成为-1。如果你能为这一行提供更多的上下文,我相信有人会给出一个更准确的答案。我理解!!什么也不做,因为它忽略了两次,对吗?+将其从真|假值转换为0或1。还有!!什么都不做,第一个代码>检查它是否为假,然后第二个代码>翻转答案。如果您只有反转的真/假值,那么它似乎什么也不做。但您可以看到,如果使用非真/假值进行反转,它确实会产生影响。