美文网首页前端让前端飞
《图解Javascript》- 数据类型概述

《图解Javascript》- 数据类型概述

作者: 张中华 | 来源:发表于2021-02-09 09:05 被阅读0次

github地址:https://github.com/956159241/TuJieQianDuan/blob/master/%E5%9B%BE%E8%A7%A3Javascript/JS%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E6%A6%82%E8%BF%B0.md

数据类型的分类

JS的数据类型分为两种,一种是原始类型,一种是引用类型。

原始类型

Undefined, Null, Number, String, Boolean, Symbol共6种。

引用类型

第一个是Object, Object作为基类,又衍生出了Array, Math, Regexp, Date常用的引用类型和Boolean,String,Number原始值的包装类型以及ES6新增的Map、WeakMap,Set、WeakSet管理集合的引用类型。


JS数据类型概述.jpg

数据类型的判定

针对不同的数据类型,有不同的判断方式,最常见的方法有typeof 和instance。

typeof

typeof.jpg

一般原始类型可以使用typeof进行判断(除null),如下实例
试一试:http://jsrun.net/QPaKp/edit

const u = undefined; // 这里其实不必要显示赋值为undefined,为了demo更加明显才赋值
const n = null;
const s = 'string';
const num = 100;
const bo = true;
const sy = Symbol('symbol');
const ob = new Object();
const arr = new Array();
const fun = () => {}

console.log(`u的数据类型:${typeof u}`);
console.log(`n的数据类型:${typeof n}`);
console.log(`s的数据类型:${typeof s}`);
console.log(`num的数据类型:${typeof num}`);
console.log(`bo的数据类型:${typeof bo}`);
console.log(`sy的数据类型:${typeof sy}`);
console.log(`ob的数据类型:${typeof ob}`);
console.log(`arr的数据类型:${typeof arr}`);
console.log(`fun的数据类型:${typeof fun}`);

结果:

> u的数据类型:undefined
> n的数据类型:object
> s的数据类型:string
> num的数据类型:number
> bo的数据类型:boolean
> sy的数据类型:symbol
> ob的数据类型:object
> arr的数据类型:object
> fun的数据类型:function

综上实例可以看出,利用typeof除null被判定为object类型外,其他的原始类型及函数均判断正确。在红宝书的解释是这样子的,特殊值null被认为是一个对空对象的引用。

instanceof

由于typeof无法判断null和Object对象的的类型,所以引入了一个instanceof方法来判断null和Object对象的类型。
试一试:http://jsrun.net/PPaKp/edit

const obj = new Object();
const arr = new Array();
const date = new Date();
// const math = new Math(); // Uncaught TypeError: Math is not a constructor
const reg = new RegExp();
const map = new Map();
const weakMap = new WeakMap();
const set = new Set();
const weakSet = new WeakSet();

const str = new String('test');
const str1 = 'test';

const bo = new Boolean(1);
const num = new Number('5');

const nu = null;


console.log(`obj 是不是Objec的实例? - ${obj instanceof Object}`); // true
console.log(`arr 是不是Array的实例? - ${arr instanceof Array}`); // true
console.log(`date 是不是Date的实例? - ${date instanceof Date}`); // true
console.log(`reg 是不是RegExp的实例? - ${reg instanceof RegExp}`); // true
console.log(`map 是不是Mp的实例? - ${map instanceof Map}`); // true
console.log(`weakMap 是不是WeakMap的实例? - ${weakMap instanceof WeakMap}`); // true
console.log(`set 是不是Set的实例? - ${set instanceof Set}`); // true
console.log(`weakSet 是不是WeakSet的实例? - ${weakSet instanceof WeakSet}`); // true
console.log(`str 是不是String的实例? - ${str instanceof String}`); // false
console.log(`str1 是不是String的实例? - ${str1 instanceof String}`); // true
console.log(`bo 是不是Boolean的实例? - ${bo instanceof Boolean}`); // true
console.log(`num 是不是Number的实例? - ${num instanceof Number}`); // true


console.log(`arr 是不是Object的实例? - ${arr instanceof Object}`); // true
console.log(`nu 是不是Object的实例? - ${nu instanceof Object}`); // false

从上面的示例中可以看出,null虽然被认为是对空对象的引用,但并不是Object的实例。由此可以判断一个值是不是为null

const nullValue = null;
typeof nullValue === object && !(nullValue instanceof Object)

相关文章

  • 《图解Javascript》- 数据类型概述

    github地址:https://github.com/956159241/TuJieQianDuan/blob/...

  • JS基础

    JavaScript概述 、 JavaScript基础语法 、 变量和常量 、 数据类型 数据类型转换 、 运算符...

  • JS数据类型

    JS数据类型 概述 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,...

  • JS 中的数据类型

    数据类型概述 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有七...

  • JS数据类型—null、undefined和布尔值

    数据类型概述 简介 JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型共有六...

  • js数据类型

    概述 JavaScript是弱类型语言,但不是没有数据类型,JavaScript规定了五种简单的数据类型 (1)数...

  • JavaScript数据类型

    1、概述 1、简介 JavaScript 语言的每一个值,都属于某一种数据类型. JavaScript 的数据类型...

  • JS 里的数据类型

    一.概述 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。...

  • 数据类型

    概述 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(E...

  • JavaScript数据类型概述

    JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 ...

网友评论

    本文标题:《图解Javascript》- 数据类型概述

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