zoukankan      html  css  js  c++  java
  • JavaScript ==与===

    确定两个变量是否相等是编程中的一个非常重要的操作。

    JavaScript提供了两组操作符:相等(==)——先转换再比较, 全等(===)——仅比较而不转换

    JavaScript所有的类型比较无非在5种基本数据类型之间进行:Boolean, Number, String, Null, Undefined

    首先来看前三种基本数据类型(Boolean, Number, String),它们三者之间可以进行六种结合。

    当使用==操作符时,会有以下转换规则:

    Number 与 Number --> Number

    Number 与 Boolean --> Number

    Number 与 String   --> Number

    Boolean 与 Boolean --> Number

    Boolean 与 String   --> Number

    String   与 String   --> String

    综上:除String与String之间的比较,进行纯字符串之间的比较,其余五种情况均转换为Number再进行比较。

    既然要转换为Number类型再进行比较,我们来看其转换规则,将其它类型转换为Number类型,用的是转换函数Number(),转换规则如下:

    Boolean: true -->1 , false --> 0

    Null: null --> 0

    Undefined: undefined --> NaN

    Number: Number --> Number

    String: 如果只包含数字,则转换为相应数字,如‘123’ --> 123

        如果字符串为空,则转换为0, ‘’ --> 0

        其实情况转换为 NaN

    记住:NaN与任何值都不相等,包括NaN本身。

    再来看余下的两个基本数据类型Null与Undefined,它们有以下规则:

    null == undefined
    null == null
    undefined == undefined
    除了以下三组比较相等外,null和undefined与任何其它值都不相等。

    一些有趣的示例:

    '' == '0'           // false
    0 == ''             // true
    0 == '0'            // true
    
    false == 'false'    // false
    false == '0'        // true
    
    false == undefined  // false
    false == null       // false
    null == undefined   // true
    
    ' 	
     ' == 0     // true

    再来看===

    ===再比较之前不进行数据类型转换,类型和值都要相等

    如:‘55’ === 55  // false, 因为数据类型不相等

    以下特殊情况:

    null === undefined  // true

    NaN === NaN   // false

    +0 === -0  // true

    总结:推荐使用===

  • 相关阅读:
    Python 描述符(descriptor) 杂记
    Celery 使用简介
    异步任务神器 Celery 简明笔记
    高性能框架gevent和gunicorn在web上的应用及性能测试
    Flask + Gunicorn + Nginx 部署
    Mysql查看最大连接数和修改最大连接数
    配置 influxDB 鉴权及 HTTP API 写数据的方法
    Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
    linux端口开放指定端口的两种方法
    java自带的监控工具VisualVM一
  • 原文地址:https://www.cnblogs.com/loveyunk/p/6732526.html
Copyright © 2011-2022 走看看