缩小js时布尔切换的原因

时间:2018-01-22 12:10:11

标签: javascript minify

我在js文件中有这行代码

#N/A

当它缩小时变为

Application.Match

我只是好奇,为什么有IsError运算符?对我来说,做到这一点更有意义。

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

4 个答案:

答案 0 :(得分:5)

!运算符执行转换。因此!0变为true!1变为false。而01是数字,而不是布尔值。

答案 1 :(得分:3)

有一个非常正确的理由。 10是整数,有时与布尔有所不同。

但是,!运算符包含强制转换,其中!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将是truefalse,这正是您所寻找的。

答案 2 :(得分:2)

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

而不是做

Window.innerWidth > 1360 ? true : false

Window.innerWidth > 1360

答案 3 :(得分:2)

!是(逻辑非)运算符所以!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 这也是有效的,但是当您希望数据类型为布尔值时,您无法使用此表达式。