最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript中关于类型判断的一些疑惑小结

来源:动视网 责编:小采 时间:2020-11-27 22:06:12
文档

javascript中关于类型判断的一些疑惑小结

javascript中关于类型判断的一些疑惑小结:前言 类型判断是我们在日常工作中经常会遇到的一个功能,本文将给大家详细介绍关于javascript类型判断的相关内容,下面话不多说了,来一起看看详细的介绍吧 Javascript中数据类型分为两种: 简单数据类型:Undefined, NULL, Boolean, Numb
推荐度:
导读javascript中关于类型判断的一些疑惑小结:前言 类型判断是我们在日常工作中经常会遇到的一个功能,本文将给大家详细介绍关于javascript类型判断的相关内容,下面话不多说了,来一起看看详细的介绍吧 Javascript中数据类型分为两种: 简单数据类型:Undefined, NULL, Boolean, Numb


前言

类型判断是我们在日常工作中经常会遇到的一个功能,本文将给大家详细介绍关于javascript类型判断的相关内容,下面话不多说了,来一起看看详细的介绍吧

Javascript中数据类型分为两种:

  • 简单数据类型:Undefined, NULL, Boolean, Number, String
  • 复杂数据类型:Object
  • 接下来我们就来看看怎么做数据类型判别吧?

    首先来看看 typeof

    Type Result
    Undefined "undefined"
    Null "object" (see below)
    Boolean "boolean"
    Number "number"
    String "string"
    Symbol (new in ECMAScript 2015) "symbol"
    Host object (provided by the JS environment) Implementation-dependent
    Function object (implements [[Call]] in ECMA-262 terms) "function"
    Any other object "object"

    来点code demo吧

    let a = undefined;
    typeof a
    "undefined"
    
    let b = false;
    typeof b
    "boolean"
    
    let c = 12;
    typeof c
    "number"
    
    let d = '12';
    typeof d
    "string"
    
    let f = function () {};
    typeof f
    "function"

    接下来我们就来看看那些奇怪的现象吧

    let str = new String('abc');
    typeof str
    "object"
    
    let num = new Number(12);
    typeof num
    "object"
    
    var func = new Function();
    typeof func; 
    "function"
    
    typeof null
    "object"

    使用构造函数创建的变量,使用typeof判断会返回“object”结果,但是Function函数例外,由它创建的变量typeof返回的是“function”

    接着就来说说typeof null == "object"。这个相信前端开发的小伙伴都知道是这个结果了,But why? 这其实是javascript第一个版本就存在的一个bug,历史原因可以看看这篇文章The history of typeof null

    关于如何判断数组

    let arr = [1, 2, 3];
    typeof arr
    "object"

    上面这个结果大家应该不陌生,那该如何正确判断数组类型呢

    1、instanceof

    arr instanceof Array //true

    2、isArray

    Array.isArray(arr) // true

    3、constructor.name

    arr.constructor.name // "Array"

    第三种用法用的人应该比较少,不少前端的的小伙伴都没用过。对于复杂类型Object,它的每个实例都有constructor属性。

    instanceof vs isArray

    当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.

    var iframe = document.createElement('iframe');
    document.body.appendChild(iframe);
    xArray = window.frames[window.frames.length-1].Array;
    var arr = new xArray(1,2,3); // [1,2,3]
    
    // Correctly checking for Array
    Array.isArray(arr); // true
    // Considered harmful, because doesn't work though iframes
    arr instanceof Array; // false

    这段代码是从MDN copy的。补充以下结果,发现第三种方法constructor.name也能正确判断出。

    arr.constructor.name //"Array"

    关于NaN

    使用isNaN判断NaN。

    isNaN(1/'a') // true

    我们知道NaN == NaN结果是false,那如何判断两个NaN变量呢?

    比较两个NaN变量,使用es6的Object.is()即可。

    let nan1 = NaN
    let nan2 = NaN
    Object.is(nan1, nan2)
    true

    总结

    文档

    javascript中关于类型判断的一些疑惑小结

    javascript中关于类型判断的一些疑惑小结:前言 类型判断是我们在日常工作中经常会遇到的一个功能,本文将给大家详细介绍关于javascript类型判断的相关内容,下面话不多说了,来一起看看详细的介绍吧 Javascript中数据类型分为两种: 简单数据类型:Undefined, NULL, Boolean, Numb
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top