为什么JavaScript中的“新”字符串(“。”)被评估为false?

在 JavaScript 中,字符串是一种基本数据类型,用于表示文本信息。但是,当我们尝试将一个看似是新字符串的字符“。”(U+002E)作为布尔值进行求值时,它会被评估为 false。这是因为“。”被认为是 falsy 值。在本文中,我们将探讨这个问题的原因,并提供一些解决方案。

Falsy 值

在 JavaScript 中,有一组被认为是“falsy”的值。Falsy 值是指在 Boolean 上下文中被视为 false 的值。以下是 JavaScript 的 falsy 值列表:

  • false
  • 0(数字零)
  • -0(负零)
  • 0n(BigInt 零)
  • ""(空字符串)
  • null
  • undefined
  • NaN(非数字)

如果一个值不属于上述任何一项,则称为“truthy”值,即在 Boolean 上下文中被视为 true 的值。

“。”为什么是 Falsy 值?

如前所述,“。”在 JavaScript 中被认为是 falsy 值。这是因为字符串转换规则可以将其转换为数字零。当使用 Number() 函数将字符串“。”转换为数字时,它将返回 0。因此,在布尔上下文中,字符串“。”被视为 falsy 值。

------------------------- -- -
-------------------------- -- -----

解决方案

如果您的代码需要将字符串“。”作为 truthy 值处理,则可以使用以下解决方案之一:

1. 使用严格相等运算符

在 JavaScript 中,有两种相等运算符:双等号(==)和三等号(===)。双等号测试两个值是否相等,而三等号测试两个值是否严格相等(即它们类型相同且具有相同的值)。

由于“。”是一个字符串,因此我们可以使用三重等号来测试其是否与字符串“。”本身严格相等:

----- --- - ----
-- ---- --- ---- -
  ---------------- -- ---------
- ---- -
  ---------------- -- --------
-

2. 显式类型转换

如果您需要将字符串“。”转换为 truthy 值,则可以使用以下任何一种显式类型转换:

  • 字符串拼接:您可以将空字符串(或任何非零长度字符串)与“。”连接起来,从而使其成为一个 truthy 字符串。
----- --- - ----
-- --- - ---- -
  ---------------- -- ---------
- ---- -
  ---------------- -- --------
-
  • Boolean 类型转换:您可以通过将字符串“。”传递给 Boolean() 函数来将其转换为 truthy 值。
----- --- - ----
-- -------------- -
  ---------------- -- ---------
- ---- -
  ---------------- -- --------
-

结论

在 JavaScript 中,字符串“。”被认为是 falsy 值,因为它可以转换为数字零。如果您的代码需要将其作为 truthy 值处理,则可以使用严格相等运算符或显式类型转换来实现。重要的是要记住,JavaScript 提供了两种相等运算符,您应该使用适当的运算符进行测试。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/10840