深入理解JS丨青训营笔记创作

98 阅读2分钟

青训营笔记创作第五天 深入理解JS 1.数据的分类 基本(值) 类型 [primitive values] 基本类型 类型的值 检测方法 Number 可以任意数值 用typeof检测结果为number String 可以任意字符串 用typeof检测结果为string Boolean 只有true/false 用typeof检测结果为boolean undefined 只有undefined 用typeof检测数据类型和‘===’(全等符号) null 只有null ‘===’(全等符号) Symbol 通过Symbol()得到,值可任意 用typeof可检测结果为symbol

对象(引用)类型 [reference values] 对象类型 描述 检测方法 Object 可以任意对象 可以用typeof/instanceof检测数据类型 Array 一种特别的对象(有数值下标,而且内部数据是有序的。一般的对象内部 的数据是无序的,比如你一个对象中有name和age,他们是无序的。) instanceof Function 一种特别的对象(可以去执行的对象,内部包含可运行的代码。一个普通 的对象可以执行吗?不能。)另外,对象是存储一些数据的,当然函数也 是存储一些代码数据。 typeof Date 时间对象 instanceof RegExp 正则对象 instanceof 2.数据类型的判断 typeof 注1:用typeof判断返回数据类型的字符串(小写)表达。比如:typeof ‘hello’ 结果是 string。 注2:用typeof来测试有以下七种输出结果:number string boolean object function symol undefined。 因此typeof不能去判断出null与object,因为用typeof去判断null会输出object。 注3:所有的任何对象,用typeof测试数据类型都是object。因此,typeof不能去判断出object与array。

===(全等符号) 注1:只可以判断undefined 和 null 因为这两种基本类型的值是唯一的,即可用全等符比较。

instanceof 注1:A instanceof B 翻译就是B的实例对象是A 吗? 判断对象的具体类型(到底是对象类型中的Object Array Function Date RegExp的哪一个具体的类型),返回一个Boolean值。

借调法:Object.prototype.toString.call() 注1:这种方法只可以检测出内置类型(引擎定义好的,自定义的不行),这种方法是相对而言更加安全。Object Date String Number RegExp Boolean Array Math Window等这些内置类型。 3.数据类型之间的比较 基本数据类型间的比较

规则:如果类型相同,则直接比较; 如果类型不同, 都去转成number类型再去比较 三个特殊点:1. undefined == null 2. 0和undefined, 0和null都不等 3. 如果有两个 NaN 参与比较,则总是不等的。

总结:都是基本数据类型,但当类型不同时,转为number类型的规律如下:

基本类型中非number类型 转为number类型 undefined ‘12a’ ‘abc’ ‘\’ Nan '' ' ' '\t' '0' null false 0 true ‘1’ 1 ‘12’ 12