博客
关于我
js中两个等号和三个等号区别?
阅读量:509 次
发布时间:2019-03-07

本文共 1103 字,大约阅读时间需要 3 分钟。

在 JavaScript 中,比较运算符的选择至关重要,特别是==和===的区别。以下是它们的详细比较和使用指导:

1. getType === ===的严格等式

  • 类型检查:首先检查两个变量的类型。如果类型不同,表达式结果为false

    • 示例:5 === "5",返回false,因为它们是不同的类型。
    • 示例:两个对象指向同一个,返回true
  • NaN处理:严格比较中,NaN !== NaN,因为NaN是唯一无法与自己比较的值。

    • 示例:isNaN(NaN) === true(使用isNaN()函数检测)。
  • 字符串比较:每个字符必须完全相同。

    • 示例:“abc” === “abc”``,返回true“ab” !== “abc”,返回false`。
  • 布尔值:必须是同一类型且相等。

    • 示例:true === true``,返回truetrue !== 1,返回false`。
  • 对象和函数:比较引用是否相同。

    • 示例:var obj1 = {}, obj2 = {};obj1 === obj2返回false
  • null和undefined:两者都返回true

    • 示例:null === undefined返回false

2. 非严格等式 === =

  • 类型转换:在比较前,会自动尝试转换两边的值。

    • 示例:"1" == true1"1"比较返回true,因为true转换为1
  • 特殊值检查:对于nullundefined,直接比较null == undefined返回false

  • NaN比较NaN == NaN返回true,因为在非严格比较中,NaN被认为等于自己。

  • 字符串和数值:非类型转换的字符串和数值比较,可能导致意外结果。

    • 示例:"1" == true返回true
  • 布尔和数值:非严格比较下,true1比较则转换为相同的值。

3. 使用的场景

  • 类型转换:在需要隐含的类型转换时使用非严格比较。

    • 示例:"\n" == prepares的处理,转换为特定的值。
  • 用户输入:处理空值和转换后的结果。

  • 原始值和对象:在处理truefalsenullundefined时使用非严格比较。

4. 哦,这么多规则,我应该如何选择?

根据具体需求选择运算符:

  • 绝大多数情况,用于比较值时或使用===
  • 需要隐含类型转换时,使用==
  • 检查引用类型时,使用===
  • 处理NaN时,使用isNaN()函数,并结合===维护正确性。
  • 5. 避免错误

    • 避免依赖隐式转换,明确写出转换逻辑,避免意外的结果。
    • 在复杂条件下,保持逻辑的清晰和可读性。

    通过合理选择运算符,可以更可靠地编写代码,避免逻辑错误。

    转载地址:http://tvyjz.baihongyu.com/

    你可能感兴趣的文章
    mysql中like % %模糊查询
    查看>>
    MySql中mvcc学习记录
    查看>>
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>