码迷,mamicode.com
首页 > Web开发 > 详细

js之数据类型的比较

时间:2018-12-12 20:31:26      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:字符串比较   基本   空间   引用数据类型   字符串   ring   []   lock   12px   

js中数据类型分基本数据类型和引用数据类型,然后它们又再细分,那么它们之间的比较又是怎么进行的呢?刚接触这个,真的是把我弄得特别懵,不过总结完以后,做了些练习好了很多,下面我来捋一捋。
==

  • 比较;返回一个布尔值;相等返回true,不相等返回false
  • 允许不同数据类型之间的比较;
  • 如果是不同类型的数据进行,会默认进行数据类型之间的转换;
    console.log(1 == 1);// true
    console.log(1 == "1");// true
    console.log(1 == "1px");//false
    console.log(1 == true);//true
    console.log([]==false)// true
    console.log([]==0)// true
    console.log(100 == false);// false
    console.log(188 == "188");// true
    console.log(false == " ");// true
  • 如果是对象数据类型的比较,比较的是空间地址
    console.log({}==[])// false
    console.log({}=={})// false
    console.log([]=="")// true
    console.log([]==0)// true

既然有这么多数据类型,那么它们的比较肯定不是毫无章法的!

  • 数据类型比较规律
  1. 对象 ==布尔: 对象先转字符串再转数字,布尔转数字;
  2. 对象==对象: 比较是空间地址;
  3. 对象==数字 对象先转字符串,再转数字
  4. 对象==布尔: 对象先转字符串,再转数字,布尔转数字
  5. 对象==字符串 : 对象转字符串,字符串比较
  6. 布尔==字符串 : 布尔转数字,字符串转数字
  7. 布尔==数字: 布尔转数字
  8. 字符串==数字: 字符串转数字

    { } 对象toString 转换成字符串结果是"[object Object]"
    !(取反) : 会先把后面的值进行去布尔,然后再取反,最后比较
    0 " " NaN null undefined只有这五个值转布尔是false;

    console.log(![] == [])// true
    console.log([]==[])// false
    console.log(![]==false);//true
    console.log({a:1}=="[object Object]")// true
    console.log("12px" == 12);

===
绝对比较; 只要数据类型不一样,那么返回false;
console.log(1 === 1);// true
console.log(1 === true);// false
console.log(1 === "1");// false

js之数据类型的比较

标签:字符串比较   基本   空间   引用数据类型   字符串   ring   []   lock   12px   

原文地址:https://www.cnblogs.com/wangxingren/p/10110595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!