最小化 js 时布尔切换的原因



我在js文件中有这行代码

var useScroll = Window.innerWidth > 1360 ? true : false;

当它被缩小时,它变成了

i=Window.innerWidth>1360?!0:!1

我只是好奇,为什么!操作员?对我来说,只是存在更有意义。

i=Window.innerWidth>1360?1:0

!运算符执行强制转换。所以!0变得true!1变得false。但是,01是数字,而不是布尔值。

有一个非常正当的理由。 10是集合器,有时行为与布尔值不同。

但是,!运算符包括强制转换,其中 menas !0!1 是针叶布尔值,但它们的类型比 falsetrue 短。这就是他们使用蜂的原因。

它们行为不同的示例:

var a = (1 === true); //a will be false
var a = (!0 === true); //a will be true

但是,您可以将代码简化为

i=Window.innerWidth>1360

因为Window.innerWidth>1360要么是true要么是false这正是您正在寻找的。

如果你做!0!1它将成为布尔值,如果你删除!它将是一个整数...

而不是做

Window.innerWidth > 1360 ? true : false

Window.innerWidth > 1360

! 是(逻辑上不是(运算符 所以 !0 变为真,!1 变为假。其中只有 0 和 1 是非布尔值的数字。

var n1 = !true;  // !t returns false
var n2 = !false; // !f returns true
var n3 = !'Cat'; // !t returns false

因此,两者都具有数据类型的不同含义。

i=Window.innerWidth>1360?1:0 正如您所说,这也是有效的,但是当您希望数据类型为布尔值时,您无法使用此表达式获得。

最新更新