Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 JS-是否存在这样的情况!!x和x不代表相同的逻辑值_Javascript_Boolean - Fatal编程技术网

Javascript JS-是否存在这样的情况!!x和x不代表相同的逻辑值

Javascript JS-是否存在这样的情况!!x和x不代表相同的逻辑值,javascript,boolean,Javascript,Boolean,我在重构代码时遇到了几行在if条件中使用双重否定的情况 这让我思考,javascript中是否有任何情况下,如果!!x不会分解为与x相同的条件 注意:我不是在说!!x!==x、 我的意思是它们代表不同的逻辑值。换句话说,是否存在这两种表达结果不一致的情况 x ? true : false; !!x ? true : false; 在x=NaN的情况下!!x不等于x。下面是一个测试: var x=NaN; 如果x==x{ console.log!!x等于x; }否则的话!!x!==x{ con

我在重构代码时遇到了几行在if条件中使用双重否定的情况

这让我思考,javascript中是否有任何情况下,如果!!x不会分解为与x相同的条件

注意:我不是在说!!x!==x、 我的意思是它们代表不同的逻辑值。换句话说,是否存在这两种表达结果不一致的情况

x ? true : false;
!!x ? true : false;
在x=NaN的情况下!!x不等于x。下面是一个测试:

var x=NaN; 如果x==x{ console.log!!x等于x; }否则的话!!x!==x{ console.log!!x不等于x; } 在x=NaN的情况下!!x不等于x。下面是一个测试:

var x=NaN; 如果x==x{ console.log!!x等于x; }否则的话!!x!==x{ console.log!!x不等于x; } 不,没有

JS中的每个值都是虚假的或真实的:

几乎所有的物体都是真实的 除0以外的所有数字都是真实的 除空字符串外的所有字符串都是真实的 0是虚假的 空字符串是错误的 未定义和null是错误的 !!expr会将虚假值变为虚假,将真实值变为真实。它本质上是expr到布尔值的转换。

不,没有

JS中的每个值都是虚假的或真实的:

几乎所有的物体都是真实的 除0以外的所有数字都是真实的 除空字符串外的所有字符串都是真实的 0是虚假的 空字符串是错误的 未定义和null是错误的
!!expr会将虚假值变为虚假,将真实值变为真实。它本质上是expr到布尔值的转换。

正如已经回答的那样,所有值都是假值或真值,因此没有变量x,例如x!=!!十,

但是,如果x不是一个变量,而是一个逻辑单元,如a | | b,则存在尚未计算的x不等于的情况!!十,

从:

如果你评估Cat'| |'Dog',返回值将为false,然后您将得到!!'猫“| |狗”当然会返回真值


所以,是的,在这种情况下,不仅你可以得到x!==!!x;你也可以得到x!=!!x

正如已经回答的那样,所有值都是虚假的或真实的,因此没有变量x,例如x!=!!十,

但是,如果x不是一个变量,而是一个逻辑单元,如a | | b,则存在尚未计算的x不等于的情况!!十,

从:

如果你评估Cat'| |'Dog',返回值将为false,然后您将得到!!'猫“| |狗”当然会返回真值


所以,是的,在这种情况下,不仅你可以得到x!==!!x;你也可以得到x!=!!x

像x=new Booleantrue?从技术上讲,如果x=new Booleantrue,那么!!x!==十,。但是,如果x和if!!x的计算结果为真。你到底在问什么?你问了两个截然不同的问题!!x!==x和ifx。这些都不是同一件事。@jhpratt我编辑了这个问题,而且我从来没有说过任何关于!!x和x相等。@TheGirrafish这是你问题的标题,就像x=new Booleantrue?从技术上讲,如果x=new Booleantrue,那么!!x!==十,。但是,如果x和if!!x的计算结果为真。你到底在问什么?你问了两个截然不同的问题!!x!==x和ifx。这些都不是同一件事。@jhpratt我编辑了这个问题,而且我从来没有说过任何关于!!x和x相等。@TheGirrafish这是你问题的标题。答案是否定的,不可能有一个变量x,其中的逻辑值为!!x与x不同。答案是否定的,不可能存在逻辑值为!!x与x的不同。
o5 = 'Cat' || 'Dog'      // t || t returns "Cat"
o6 = false || 'Cat'      // f || t returns "Cat"