单引号字符串和数字的javascript相等操作成功

时间:2015-03-17 18:48:40

标签: javascript

  • 我尝试检查来自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

4 个答案:

答案 0 :(得分:1)

你应该几乎总是使用严格的平等'检查javascript,即三等于===而不是==

当你使用==时,为了操作的目的,javascript会为你做类型转换。字符串和整数可以这种方式相比,价值观等等。你通常不应该因任何原因使用==

更多例子:

null == undefined; // true

null === undefined; // false

答案 1 :(得分:1)

如果您确实想确定,则应将值强制为相同类型。像这样:

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

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

Here is a link to parseFloat() explained.

您还可以使用严格相等的“===”。要么有效!

答案 2 :(得分:0)

JavaScript不是强类型的。所以,它有点宽容。如果你知道错误代码总是一个整数,那么就不要使用单引号。

答案 3 :(得分:0)

您应该使用===运算符。 ==检查值等价,但不查看类型。你也想看一下这个类型。

将两行切换为===后仍然返回true的值将是正确的响应。