zoukankan      html  css  js  c++  java
  • 面试题中常见的数据类型陷阱【1】

    * 首先明确一下js中常见的false值有:0,+0,-0,false,"",undefined,null,NaN.

    我们平时这样说是在强制转换Boolean()或隐式转换情况下,所以正常情况下作比较,情况如下:

    1     console.log(NaN==undefined);   //false
    2     console.log(NaN==false);      //false
    3     console.log(undefined==false);      //false
    4     console.log(null==false);     //false

    此时不存在隐式转换,所以为false。

    但若在数字或字符类型进行比较时,js运行机制会将其隐式转换为Boolean类型:

    1  console.log(false=="");   //true
    2  console.log(false==0) ; //true

    但作为弱类型语言,js有着很多不符合常理的情况,我们称之为怪异行为:

    
    
          console.log("0"==false);    //true
    console.log(Boolean("0")); //true
    1     Boolean([]);      //true
    2     console.log([]==false); //true
    3     console.log(null==undefined);   //true

    最后再说NaN,W3C的API中这样说NaN:

    NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

    可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

    console.log(typeof NaN);    //number

    意思就是NaN就是一个量,他不是数字,但和数字同属于number类型。既然是一个非数字的量,那么它就不能比较:

        console.log(NaN==NaN);  //false
        console.log(NaN===NaN);  //false
        console.log(NaN==false);  //false
        console.log(NaN=="ABC");   //false
  • 相关阅读:
    1021. Deepest Root (25)
    1013. Battle Over Cities (25)
    h5ai目录列表优化
    利用chrome调试手机网页
    跨域相关配置
    HttpClient服务端发送http请求
    滚动条样式优化(CSS3自定义滚动条样式 -webkit-scrollbar)
    javaScript复制粘贴
    效率工作
    spring boot实现文件上传下载
  • 原文地址:https://www.cnblogs.com/pomelott/p/6536279.html
Copyright © 2011-2022 走看看