[英]Why don't I have to declare a value in my boolean if statements?
下面是一些简单的代码:
var x = 4;
if (x) {
alert("true");
} else {
alert("false");
}
JavaScript 是否会自动知道第一个警报是在x == 4
,第二个警报是在x != 4
? 为什么我不必在 if 语句中声明if (x == 4)
?
就像您正在检查是否 (x的值不是 0 null 或 undefined这是true
),
但是,如果您想测试将x to 5
更改x to 5
并将您的条件更改为x === 4
,
它会把你扔到else
部分。
var x = 4; if (x === 5) { alert("true"); } else { alert("false"); }
在这里,您正在检查 x 是否为真。 这意味着它具有非 0 的值。
与真相反的称为假。 如果 x 为 false、0、""、null、undefined 或 NaN,if(!x) 将返回 true
其实我认为你需要更多地了解类型强制。 在 JavaScript 中,有时某些类型会改变其性质。 在您的示例中, number
类型更改为boolean
因此if
接受它并引发第一个警报。
由于 JavaScript 是一种动态类型语言,这意味着您不必为变量声明指定类型,因此在某些情况下(例如您提供的情况),它必须自动检测类型并将其强制转换/转换为如果需要,在称为强制的技术中使用适当的类型。
在您的场景中,JavaScript 期望一个布尔值作为 if 语句的参数,但提供的是一个数字。 因此,在这种情况下,JavaScript 尝试将此整数值强制转换为布尔值。 JavaScript 用于将数字强制转换为整数的策略如下:
如果数字为 0,JavaScript 会将其强制为 false,而对于任何其他数字,则将其强制为 true。
对于字符串,
如果字符串是空字符串 ( ""
),则将其强制为 false,而对于任何其他非空字符串值,则将其强制为 true。
被强制为false
的值被称为假值,而被强制为true
值被称为真值。
希望这可以帮助。 如需进一步阅读, 请查看此内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.