美文网首页
【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基础-变量类型+判断

    1、数据类型 JS的数据类型分为基本类型和引用类型- 基本类型:String、Number、Boolean、Nul...

  • JS基础知识体系

    JS基础知识 1、变量类型和计算 值类型和引用类型 类型判断 逻辑运算 2、原型和原型链 class 继承 原型 ...

  • JS中typeof的用法章

    js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。对于判断一个变量的类型,js提供 ...

  • JS中typeof的用法

    js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。那么如何判断一个变量的类型呢,...

  • js变量类型判断==、===、if(...)

  • JS变量类型判断

    typeof 从输出的结果来看,arr, json, nul, date, reg, error 全部被检测为ob...

  • JS 笔记

    temp JS 变量类型判断 JS 浮点 https://github.com/camsong/blog/issu...

  • Js基础知识-手动实现深拷贝

    本文将手动实现引用类型的深拷贝关于值类型与引用类型可阅读下方文章:JS基础类型直通车:Js基础知识-变量类型Js基...

  • JavaScript 大纲

    js 语法基础 JavaScript 介绍 js 输出 注释 变量,变量声明提升,全局变量,常量 7 大数据类型 ...

  • TypeScript 笔记

    TypeScript 是 JS 的超集,强调变量类型。让JS更加接近强类型语言 基础类型 相比于原始JS,多了 a...

网友评论

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

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