JavaScript 相等操作对单引号字符串和数字都成功

javascript equality operation succeeds for both single quote string and number

本文关键字:数字 成功 字符串 单引号 操作 作对 JavaScript      更新时间:2023-09-26
  • 我尝试检查从node.js服务器中的mongo返回的错误代码
  • 两种情况下的比较都成功

  • 哪一个是正确的,应该使用?

  • 请原谅我对此的有限理解。

我有这样的代码

        if (err['code'] == '11000') {
          console.log("Single Quote String");
        }
        if (err['code'] == 11000) {
          console.log("With out single quote");
        }

输出为:

Single Quote String
With out single quote

你几乎总是应该在javascript中使用"严格相等"检查,它是三个等于:===而不是==

当你使用==时,JavaScript 会为了操作的目的而自由地为你做类型转换。 字符串和整数是可比的,伪造值等,您通常不应出于任何原因使用==

更多示例:

null == undefined; // true

null === undefined; // false

如果你真的想确定,你应该强制将值强制为同一类型。 像这样:

if ( String(err['code']) == '11000') {
      console.log("Single Quote String");
    }
    if ( parseFloat( err['code'] ) == 11000) {
      console.log("With out single quote");
    }

如果你不需要用错误代码做任何数学计算,那么字符串是最简单的方法,因为如果字符串中包含某些字符,某些浏览器中的 parseFlat() 函数可能会失败。

这是解析浮子()解释的链接。

您也可以将严格相等与"==="一起使用。两者都有效!

JavaScript 不是强类型。 所以,它有点宽容。 如果您知道错误代码始终是整数,请不带单引号。

您应该使用 === 运算符。== 检查值等效性,但不查看类型。您还想查看类型。

将两行切换到 === 后,无论哪个值仍返回 true,都将是正确的响应。