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
这是有充分理由的。 1
和 0
是整数,有时与布尔值的行为不同。
但是 !
运算符包括转换,这意味着 !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
将是 true
或 false
,这正是您正在寻找的。
!
运算符进行转换。所以 !0
变成 true
而 !1
变成 false
。但是,0
和 1
是数字,不是布尔值。
如果你做 !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 正如您所说,这也是有效的,但是当您希望数据类型为布尔值时,您无法通过使用这个表情。
我在js文件中有这行代码
var useScroll = Window.innerWidth > 1360 ? true : false;
缩小后变成
i=Window.innerWidth>1360?!0:!1
我只是好奇,为什么要有 !
运算符?对我来说,只是存在更有意义。
i=Window.innerWidth>1360?1:0
这是有充分理由的。 1
和 0
是整数,有时与布尔值的行为不同。
但是 !
运算符包括转换,这意味着 !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
将是 true
或 false
,这正是您正在寻找的。
!
运算符进行转换。所以 !0
变成 true
而 !1
变成 false
。但是,0
和 1
是数字,不是布尔值。
如果你做 !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 正如您所说,这也是有效的,但是当您希望数据类型为布尔值时,您无法通过使用这个表情。