4

我想知道在进行相等性检查时是否应该始终使用“===”(严格相等)......有没有什么时候最好使用“==”(非严格相等)的例子?特别是,应该:

  • if (param1 == null || param1.length == 0)

  • if (param1 === null || param1.length === 0)?

像字符串这样的东西呢?param1 == "This is a String."

4

2 回答 2

5

应使用的运算符取决于您的需要。

"==" 检查两个值在转换为相同数据类型后是否相等(如果可能)。因此,"5" == 5 为真,因为字符串 "5" 被转换为数字,然后进行检查,显然 5 实际上等于 5。

"===" 检查两个值是否相同且相等。因此, "5" === 5 将评估为 false,因为一个是字符串,一个是数字。

在使用选择方面,它归结为期望。如果您希望您比较的两个值属于同一类型,那么您应该使用“===”。但是,如果它们可以是不同的类型,并且您希望比较自动执行转换(例如,将字符串 5 与数字 5 进行比较),那么您可以使用“==”。

在您的示例中,所有这些都可以使用“==”运算符,但为了增加类型安全性,您当然可以使用“===”运算符。例如,我倾向于专门检查空值。

希望这可以帮助。

于 2011-02-19T20:37:19.470 回答
1

我实际上对 ActionScript 了解不多,但我相信它符合 EMCAScript,这意味着我的 JavaScript 知识将是相关的。

在 JavaScript 中,如果您愿意采用显式类型(这意味着永远不要这样做"something" + 5,始终在您的类型中显式,例如"something" + String(5)),如果您采用这种方法,实际上永远不会出现 == 优于 === 的实例。

于 2011-02-19T20:26:19.747 回答