zoukankan      html  css  js  c++  java
  • 面试题总结

    一、== 和 === 有什么区别?

    === 就是判断两者类型和值是否相同。

    对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换

    1. 首先会判断两者类型是否相同。相同的话就是比大小了
    2. 类型不相同的话,那么就会进行类型转换
    3. 会先判断是否在对比 null 和 undefined,是的话就会返回 true
    4. 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
    5. 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
    6. 判断其中一方是否为 object 且另一方为 stringnumber 或者 symbol,是的话就会把 object 转为原始类型再进行判断

    闲着看一个面试题:

    参考地址:https://blog.csdn.net/qiqi_77_/article/details/79456605

    []==[] // false 

    俩边都是相同数据类型,直接比较大小。因为[]属于引用类型,俩个[]指向不同的堆内存,所以比较的结果为false

    []==![]

    现在开始分析,!的优先级要大于==,先执行右边的![],![]=>false

    之后就是比较[]==false

    适用上面第5条规则:先把flase转换为0,,结果就是比较[]==0

    然后适用第6条规则,[]转换为值,Number([]) = 0

    所以0==0  结果胃true

  • 相关阅读:
    A. Playing with Paper
    手摇算法
    perl之创建临时文件夹遇到同名文件该咋办
    B. Two Buttons
    A Pangram
    shell的面试题
    A. Game
    B. Drazil and His Happy Friends
    A. Drazil and Date
    2道阶乘的算法题
  • 原文地址:https://www.cnblogs.com/zhaobao1830/p/10247910.html
Copyright © 2011-2022 走看看