Mozilla家的介绍详细介绍
8种类型 最新的 ECMAScript 标准定义了 8 种数据类型: Boolean、Null、Undefined、Number、BigInt、String、Symbol、Object ;
7种原始类型
null 空 Null类型只有一个值: null,反正就是什么都没有
undefined 空值 一个没有被赋值的变量会有个默认值 undefined
String 字符串基本类型 字符串类型用于表示文本数据
boolean 布尔值 布尔表示一个逻辑实体,有两个值:true 和 false。
Number 数值基本类型 在JavaScript中被表示为双精度浮点数。这意味着它们的精度有限。基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(253 -1) 到 253 -1)。除了能够表示浮点数外,还有一些带符号的值:+Infinity,-Infinity 和 NaN (非数值,Not-a-Number)
Symbol 独一无二的值 :tada:新加 ECMAScript 2016新增
BigInt 大整数基本类型 :tada:新加 是JavaScript中的一个新的数字基本(primitive)类型,原始数字类型,可以表示任意精度格式的整数 介绍1 介绍2
null和undefined的区别 简单点解释就是,JS执行时找不到对象时会返回null,声明对象了没有值时返回undefined 介绍 。
1 2 console .log ( null == undefined )console .log ( null === undefined )
从上面打印结果可以看出从严格模式上它两不一样
1种引用数据类型
Object 对象 Object、Array、Date、Function、RegExp都是object类型
声明数据类型
BigInt,将 n 作为后缀添加到任何整数文字字面量。例如,123 变成 123n。全局 BigInt(number) 函数可以用来将 Number 转换成BigInt;
Symbol值通过Symbol函数生成
1 2 3 4 5 6 7 8 9 10 var city = null ;var name = new String ;var age = new Number ;var boy = new Boolean ;var agen = BigInt (18 );var ken = Symbol ()var record = new Object ;var hobby = new Array ;var date = new Date ();var fn = new Function ();
判断类型 typeof操作符 typeof操作符返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,即:number、string、undefined、boolean、object、function,语法为typeof(data) 或 typeof data
1 2 3 4 5 6 7 8 9 10 typeof 1 ; typeof " " ;typeof true ; typeof undefined ; typeof new Function (); typeof null ; typeof [] ; typeof {}; typeof new Date (); typeof new RegExp ();
Object.prototype.toString.call()方法 1 2 3 4 5 6 7 8 9 10 11 12 13 Object .prototype .toString .call (null ); Object .prototype .toString .call (undefined ); Object .prototype .toString .call ("abc" ); Object .prototype .toString .call (123 ); Object .prototype .toString .call (true ); Object .prototype .toString .call ( function fn ( ){} ); Object .prototype .toString .call ( new Date () );Object .prototype .toString .call ([]); Object .prototype .toString .call (/[hbc]at/gi ); Object .prototype .toString .call ({}); Object .prototype .toString .call (JSON )
1 2 3 4 5 6 7 8 <p class ='demo' ></p> <p class ='demo' > </p > <p class ='demo' > </p > <p class ='demo' > </p > Object .prototype .toString .call ( document .querySelectorAll ('p' ) )
instanceof instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,返回boolean类型,语法为 o instanceof A
1 2 3 4 5 6 7 8 9 10 11 12 ({}) instanceof Object ([]) instanceof Array (/aa/g ) instanceof RegExp (function ( ){}) instanceof Function function C ( ){} function D ( ){} var o = new C ();o instanceof C; o instanceof D; o instanceof Object ;
constructor constructor 介绍 是一种用于创建和初始化class创建的对象的特殊方法,创建的每个函数都有一个prototype(原型)对象,所有原型对象都会自动获得一个constructor(构造函数)属性这个方法我是没用到过,了解下吧
1 2 3 4 5 6 7 8 9 10 function Person (name, age) { this .name = name this .age = age } var person = new Person ('Jim' , 21 )console .log (person)console .log (Object .keys (person))console .log (person.__proto__ )console .log ( person.constructor === Person );
转换类型 转换为字符串 String(obj) 或者 obj.toString(),或者对象加上空字符串也转成了字符串
1 2 3 4 5 6 7 8 9 typeof String (18 ) typeof Number (18 ).toString (); typeof (18 + "" ) typeof String (false ) String (new Date ()) ({name :"ken" }).toString (); ([1 ,2 ]).toString (); new Date ().toString ()
转换为数字 1 2 3 4 typeof Number ("6" ) Number (false ) Number (true ) Number (new Date ())
转化为布尔值 1 2 3 4 Boolean (1 ) Boolean (0 ) Boolean ( null ) Boolean ( undefined )
总结: instanceof 和 constructor 平时很少用到,typeof是高频使用,Object.prototype.toString.call()次之
参考来源:参考1 参考2