美文网首页
【01】js基础-变量类型+判断

【01】js基础-变量类型+判断

作者: 李俊佚 | 来源:发表于2021-02-22 16:58 被阅读0次

    1、数据类型

    JS的数据类型分为基本类型和引用类型
    - 基本类型:String、Number、Boolean、Null、Undefined、Symbol(new in ES6)
    - 引用类型:Object(Object、Array、Date、RegExpFunction
    基本类型,存储在栈中,可以直接调用,引用类型存储在堆中,栈中存引用(指向堆的地址)。

    这里,简单的对这些数据类型做个说明:

    1、Symbol:ES6新增,表示永不相同的数

        let sy = Symbol("a");
        let sy2 = Symbol("a");
        sy === sy2;   // false; 
    

    2、Date:时间类型

          * new Date() // 当前时间
          * new Date(year, month, day, hours, minutes, seconds, milliseconds) // 指定年月日时分秒毫秒
          * new Date(milliseconds) // 毫秒 1970-1-1 00:00:00 Universal Time, 1970-1-1 08:00:00 GMT+080
          * new Date(date string) // 时间格式字符串
    

    3、RegExp: 正则

        直接量语法:/pattern/attributes
        创建 RegExp 对象的语法:new RegExp(pattern, attributes);
        pattern 指定正则表达式的字符串,eg:"[a-z]"。
        attributes 【可选】包含属性 "g"【全局匹配】、"i" 【忽略大小写】和 "m"【多行匹配】
    

    4、Function:函数

          function a() {
            console.log(1);
          }
          let b = function() {
            console.log(1);
          }
          new Function('c', console.log(1));
    

    2、利用typeof检查类型

        typeof 1;  // "number"
        typeof '1'; // "string"
        typeof null; // "object"
        typeof undefined; // "undefined"
        typeof Symbol("a"); // "symbol"
        typeof {}; // "object"
        typeof []; // "object"
        typeof new Date(); // "object"
        typeof /[a-z]/i; // "object"
        typeof function a(){}; // "function"
    

    根据结果不难发现,null和引用类型,除了function以外,typeof的结果都是object。这些是需要单独判断的。

    附:

    • 在js的理念中,引用类型都是对象,function也应该是object,但是由于function有很多特别的地方,所以单独拿出来了。
    • null也是比较特殊的,虽然是基本数据类型,但是typeof是“object”,表示空的引用。

    2、检查null和除function外的数据类型

    1、null

    null没有直接的检查方法,但是可以利用以下思路来实现:

        typeof null; // "object"
        null == undefined; // true
        !null; //true
    

    利用这些特性,可得:

        let b = null;
        typeof b !== "undefined" && b == undefined; // true
    

    2、利用object.constructor属性进行判断

    constructor 属性返回对创建此对象的数组函数的引用

        let obj = {};
        obj.constructor === Object;  // true
    
        let arr = {};
        arr.constructor === Array;  // true
    
        let t = new Date;
        t.constructor === Date; // true
    
        let r = /[a-z]/;
        r.constructor === RegExp; // true

    相关文章

      网友评论

          本文标题:【01】js基础-变量类型+判断

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