zoukankan      html  css  js  c++  java
  • js -“=”“==”和“===”的区别

    这个问题再面试中经常被问到,说实话我都是懵的,一个“=”和两个“==”等的区别我还是知道的,就是三个“===”我完全是不知道的,因为我基本上都没有遇到过且用到过,所以再这个问题上我是没分的,人家考官就是主要考的是三个“===”呀~

    “=”:

    赋值操作;

     var x; x = 1; 即将1赋值给a.

    “==” :

    等于号操作;

    两边值类型不同的时候,要先进行类型转换,再比较;

    不做类型转换,类型不同的一定不等。

    是条件判断语句中是否相等的意思,返回值为布尔型; a==b 是a,b同一类型值的条件下,判断变量a与b是否相等,相等返回“1”,不等返回“0”。

    判断规则:

    1. 如果两个值类型相同,进行“===”比较

    2. 如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:

    ~如果一个是null、一个是undefined【true】

    ~如果一个是字符串,一个是数值,把字符串转换为数值再进行比较

    ~如果任一值是true,把它转换为“1”再比较;如果任一值是false,把它转换为“0”再比较

    ~如果一个是对象,另一个是数值或字符串,把对象转换为基础类型的值在比较。

    对象转换成基础类型,利用它的toString 或者 valueOf 方法。

    任何其他组合【false】

    “===”

    先判断类型,若不是同一类型直接返回 false;

    判断规则:

    1. 如果类型不同【false】

    2. 如果两个都是数值,并且是同一个值【true】;但是若其中至少一个是NaN【false】。(判断一个值是否是NaN,只能用 isNaN() 来判断)

    3. 如果两个都是字符串,每个位置的字符都一样【true】

    4. 如果两个值都是true,或者 false【true】

    5. 如果两个值都引用同一个对象或函数【true】

    6. 如果两个值都是 null ,或者 undefined【true】

     

  • 相关阅读:
    【前端攻略】:玩转图片Base64编码(转)
    Tuxedo入门学习
    未将对象引用设置到对象的实例--可能出现的问题总结
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    hdu 4604 Deque
    setsockopt()使用方法(參数具体说明)
    分布式系统浅析
    HDU 1181 变形课
    java中获取系统属性以及环境变量
    哈夫曼树
  • 原文地址:https://www.cnblogs.com/liuqingxia/p/7792890.html
Copyright © 2011-2022 走看看