我在js文件中有这行代码
var useScroll = Window.innerWidth > 1360 ? true : false;
当它被缩小时,它变成了
i=Window.innerWidth>1360?!0:!1
我只是好奇,为什么!
操作员?对我来说,只是存在更有意义。
i=Window.innerWidth>1360?1:0
!
运算符执行强制转换。所以!0
变得true
,!1
变得false
。但是,0
和1
是数字,而不是布尔值。
有一个非常正当的理由。 1
和0
是集合器,有时行为与布尔值不同。
但是,!
运算符包括强制转换,其中 menas !0
和 !1
是针叶布尔值,但它们的类型比 false
和 true
短。这就是他们使用蜂的原因。
它们行为不同的示例:
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 正如您所说,这也是有效的,但是当您希望数据类型为布尔值时,您无法使用此表达式获得。