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

2021-02-22  本文已影响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。这些是需要单独判断的。

附:

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
上一篇下一篇

猜你喜欢

热点阅读