四次元口袋 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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题