zoukankan      html  css  js  c++  java
  • js ==与===区别(非严格相等与严格相等)

    • 基本数据类型:number、string、boolean、undefined、null
      高级数据类型:object

    • 表格形式比较:

    比较的类型 == ===
    基础类型 不同基础类型间比较,“转化成同一类型后的值”看“值”是否相等 如果类型不同,其结果就是不等
    高级类型 进行“指针地址”比较,没有区别 进行“指针地址”比较,没有区别
    基础类型与高级类型 将高级转化为基础类型,进行“值”比较 因为类型不同,结果为false
    • 最好永远都不要使用操作符。=操作符的结果更容易预测,并且因为没有隐式转换,严格相等比较的操作会更快。

    • 非严格相等 ==
      ==比较两个值是否相等,在比较前将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被转换),最终的比较方式等同于全等操作符 === 的比较方式。 相等操作符满足交换律。
      ==比较2个值,是相同类型时,等同于 === 比较。

    • ==对于不同类型的值,进行比较的原则:

    1. Number、String、Boolean 转换为数字
    2. Object 转换为基本类型
      出处:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness
    • 对象转换为基本类型的转换规则:
      如果要将对象转为字符串,则是采用以下步骤。
    1. 先调用toString方法,如果toString方法返回的是原始类型的值,则对该值使用String方法,不再进行以下步骤。
    2. 如果toString方法返回的是复合类型的值,再调用valueOf方法,如果valueOf方法返回的是原始类型的值,则对该值使用String方法,不再进行以下步骤。
    3. 如果valueOf方法返回的是复合类型的值,则报错。
      出处:https://wohugb.gitbooks.io/javascript/grammar/conversion.html
  • 相关阅读:
    nginx 的请求处理阶段
    docker 的实践操作
    inno setup 1
    缓存算法
    think in uml-关系
    centos mono
    think in uml 2.1
    TFS 创建分支
    think in uml 1
    WebCast课程列表2
  • 原文地址:https://www.cnblogs.com/cag2050/p/7468454.html
Copyright © 2011-2022 走看看