繁体   English   中英

为什么我不必在布尔值 if 语句中声明一个值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM