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

  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/sumsung753/p/5188124.html
Copyright © 2011-2022 走看看