js缩小时boolean切换的原因

Reason for boolean switching when minifying js

我在js文件中有这行代码

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

缩小后变成

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

我只是好奇,为什么要有 ! 运算符?对我来说,只是存在更有意义。

i=Window.innerWidth>1360?1:0

这是有充分理由的。 10 是整数,有时与布尔值的行为不同。

但是 ! 运算符包括转换,这意味着 !0!1 是实际布尔值,但它们比 false 和 [=18 更短=].这就是它们被使用的原因。

他们行为不同的例子:

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

但是您可以将代码简化为

i=Window.innerWidth>1360

因为 Window.innerWidth>1360 将是 truefalse,这正是您正在寻找的。

! 运算符进行转换。所以 !0 变成 true!1 变成 false。但是,01 是数字,不是布尔值。

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

而不是做

Window.innerWidth > 1360 ? true : false

Window.innerWidth > 1360

! is (logical NOT) operator 所以 !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 正如您所说,这也是有效的,但是当您希望数据类型为布尔值时,您无法通过使用这个表情。