四次元口袋 2019-07-24 14:55 采纳率: 0%
浏览 262

在 JavaScript 比较中应该使用哪个等于运算符(=== vs==) ?

我正在使用 JSLint 浏览 JavaScript,当比较 idSele unvehtype 时,它返回了许多建议,可以用 ===替换== 。 If 语句中的idSele_UNVEHtype.value.length == 0 。
更换是否有性能好处?
任何性能改进都将受到欢迎,因为存在许多比较运算符。
如果没有类型转换发生,是否会有性能提升?

  • 写回答

4条回答 默认 最新

  • weixin_38166163 2019-07-24 15:09
    关注

    Identity (===))运算符的行为与 equality (==)运算符相同,只不过没有进行类型转换,而且类型必须相同才能被视为同等。
    执行任何必要的类型转换后,==运算符将比较是否相等。==运算符将不进行转换,因此如果两个值不是同一类型==只返回false。两者都同样迅速。
    对于引用类型 == 和===相互一致的行为(特殊情况除外)。

    var a = [1,2,3];var b = [1,2,3];
    var c = { x: 1, y: 2 };var d = { x: 1, y: 2 };
    var e = "text";var f = "te" + "xt";
    a == b            // false
    a === b           // false
    c == d            // false
    c === d           // false
    e == f            // true
    e === f           // true
    

    特殊情况是,由于 toString 或 valueOf 方法,将文字与计算结果相同的对象进行比较时。例如,考虑字符串文本与 String 构造函数创建的字符串对象的比较。

    "abc" == new String("abc")    // true"abc" === new String("abc")   // false
    

    这里,==运算符检查两个对象的值并返回true,但===发现它们不是同一类型并返回false。哪一个是正确的?这取决于你想比较什么。我的建议是完全绕过这个问题,不要使用String构造函数来创建字符串对象。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog