zoukankan      html  css  js  c++  java
  • javascript基础:等号比较

    包括==与===运算符,前者为宽松判断相等,如果两者类型不同前面的比较值将进行类型转换,后者为完全相等判定。

    1、数字、字符串和布尔值通过值比较

    ==与===检测前后两者是否相同,只当它们存放的值完全相同时才相等。

    var a = 'a';
    var b = 'a';
    console.log(a==b,a===b);

    true true

    var a = String('a');
    var b = String('a');
    console.log(a==b,a===b);

    true true

    js中的数字都为浮点数,不存在整型转为浮点型的问题

    var a = 1;
    var b = 1.0;
    console.log(a==b,a===b);

    true true

    var a = 1;
    var b = true;
    console.log(a==b,a===b); // ==前面的a进行类型转换,转为布尔值

    true false

    2、对象、数组和函数之间使用引用比较。

    数组和函数是对象的特殊形式。

    如果对象的存放地址不同,如何都不相等。

    var a = [2,3];
    var b = [2,3];
    console.log(a==b,a===b);

    false false

    var a = [2,3];
    var b = a;
    console.log(a==b,a===b);

    true true

    3、特殊的NaN

    NaN与任何数值、对象比较都不相等,包括它自身。

    var a = 2;
    var b = 0/0;
    console.log(b,a==b,a===b,b==NaN);

    NaN false false false

    4、null与undefined的比较

    这两个基本类型的比较与数字、字符串的比较是一样的。

    var a = null;
    var b = undefined;
    var d;
    console.log(d,a==b,a===b,b===d,d===undefined);

    undefined true false true true

    5、对象与字符串比较

    js内部会将对象转换成原始类型的值进行比较,通常先尝试valueOf方法,再尝试toString转换。

    var a = '[object Object]';
    var b = {};
    console.log(a==b,b.toString());

    true [object Object]

    唯一例外的是js中的核心对象Date,它直接使用toString()方法转换。

    var a = new Date(2016,04,15);
    var b = 1463241600000;
    var c = 'Sun May 15 2016 00:00:00 GMT+0800';
    console.log(a==b,a==c,a.valueOf(),a.toString());

    false true 1463241600000 Sun May 15 2016 00:00:00 GMT+0800

  • 相关阅读:
    redis基础
    docker日志清理脚本
    Hive修改表的所有者(Owner)
    User xxx does not have privileges for CREATETABLE的解决办法
    Spark读取Hive表中文显示乱码的解决办法
    Go语言之标识符与关键字
    Go语言之数据类型(三)
    bootstrapTable频繁向后台接口发请求
    框架整合疑云
    业务开发中-设计模式使用
  • 原文地址:https://www.cnblogs.com/sumsung753/p/5188124.html
Copyright © 2011-2022 走看看