== 与===

作者: sunningcarry | 来源:发表于2017-08-25 21:47 被阅读100次

还记得那些年我们面试被问过的 ![] == [],[] == false吗?
有了这篇文章,宝宝们再也不用怕了

=== 与 ==

=== 为严格等,数据类型不同即为false
a == b为测试等,可以转换a,b数据类型

=== 判断规则

  • === 左右两侧类型不同,则返回false
  • a === b,ab类型为同一个基本数据类型(string,number,boolean,undifined,null),且值相等,则返回true.如果为number类型,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
8 === NaN
false
NaN === NaN
false
  • a === b,ab类型为引用类型({},[],()),引用类型判断值是否相等,比较的是内存中存的是否是同一个对象,虽然都是两个空数组,但是引用地址不一样,结果当然为false。

== 判断规则

  • 左右两侧数据类型相同,则进行 ===比较
  • 左右两侧数据类型不同,则进行隐式转换
    • 如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
    • 对象与字符串比较 ,对象转换成字符串,再跟字符串比较.例如
Paste_Image.png

上图中 [1] == '1' //true,[1]先转换为'1',再跟'1'比较,数据类型相同,值相同,所以返回值为true
上图中 [1] == true//true,[1]先转换为‘1',转换 为1;true转换为1;1 == 1,所以返回值为true
所有的转换路线为下图,简单来说。隐式转换最后都是数值的比较


Paste_Image.png

特例

  • [] == false//true, []-> ' '->0, false ->0
  • ![] == false//true

过程:
!优先级大于==,!先执行。
!直接将其后面的转为布尔类型,再取反.(转换为布尔值为false 的几种情况null,undefined,NaN,' ',0),(为true的几种情况:[],{})
Boolean([])为true,![]为false
false == false //true

  • ![] == [];//true

左边类型为Boolean,右边为引用
![]为false,false == [],类型不同进行隐式转换, false转换为数值为0,[]转换为数值为0,所以返回true

考题

console.log([] == false)//true
console.log([] === false)//false
console.log(null === undefined)//false
console.log(null == undefined)//true
console.log({} === {})//false
console.log({} == {})//false
console.log(!{} == {})//true
console.log([1,2,3] == true)//false
console.log([1] == true)//true
参考

1.基础类型值赋值与引用类型值赋值

             var m = 2;
             var n = m;
             m = 3
             n? n的值还为2
             var a = {b:'k'}
              var c = a;
              a.b = 'carry';
              c.b? 答案是'carry'

考点:基本类型赋值是给实际的值,栈里面存放着值
引用类型赋值:是将变量的地址付给新对象,变量栈里存放着堆地址,对应堆里面的存储空间放着值
注意:
当我们想数组拷贝后,互相不影响,可以用以下办法

1. var a = [1,2];
var b = a.slice(0);
b[0] = 3;
alert(a) //1,2
 
2. var a = [1,2];
var b = a.concat(0);

参考

3.判断数据类型的几种方式

待更新

相关文章

  • && 与& ,||与|

    回忆知识点i++,,++i变量在前 先用变量符号(☞++/--)在前 先计算

  • 认真与身板

    认真与身板 认真与态度 认真与自信 认真与信心 认真与诚心 认真与正心 认真与正念 认真与正面 认真与精诚 认真与...

  • 与荒野,与你,与自己

    周末了,想跟大家分享一首诗 《阿莱夫》 诗作者:赖尔逊 阿莱夫在草原上盖了一栋房子, 犹如大海上的灯塔。 但你无法...

  • 与雪与丘与故土

  • 与海与浪与念

    木君 下午,在一段段风雨的催促下来到了绥中。天是被蒙起来的,太阳早已不知躲到哪里去了。微弱的日光和着轻柔的海风洒在...

  • 晚风与柳 孤独与狗 桥与落叶 马与白隙 云与苍天 梭与星月 天与地 生与死 树与来路 花与过往 我与你 爱与恨 夜色与酒

  • 海街日记

    和解。与他人和解、与家人和解、与自己和解;与得到和解、与失去和解;与过去和解、与现在、未来和解;与现实和解、与虚幻...

  • 生怕忘了的题目

    少与不少 多与不多 苦与不苦 乐与不乐 对与不对 错与不错 离与不离 合与不合 唱与不唱 说与不说

  • 2017-04-11

    体验入:真诚.与专业。幽默与风趣。赞美与了解。认可与相信。沟通与关注。关心与引领。快乐与持续。简单与重复。 ...

  • 天与云与山与水与树

    “天与云与山与水,上下一白” ——张岱《湖心亭看雪》

网友评论

      本文标题:== 与===

      本文链接:https://www.haomeiwen.com/subject/cippdxtx.html