js数据类型
js的数据类型一共存在8种。
- 在es5中存在6种数据类型 undefined String Object Number Null Boolean
- ES6新增了一种数据类型 Symbol :这种类型的对象永不相等,即便创建的时候传入相同的值也不相等
主要用于解决属性名冲突问题 - 谷歌也出现了一种bigInt,指的是安全存储,操作大整数
- 所以js数据类型包含了以上八种 undefined String Object Number Null Boolean Symbol bigInt
当然可以这样来进行简记 USONB 这样会不会记得更加牢固了呢?
Object包含了哪几种类型?
最常用的就是Array function Data
js的数据类型分为基本类型和引用类型
- 基本数据类型指的是简单的数据段
- 引用数据类型指的是有多个值构成的对象
基本类型: String、Number、boolean、null、undefined
- 这五种基本类型可以直接访问,他们是按照值进行分配的,存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配
引用类型:Object 。里面包含function array data
- 引用类型即存放在堆内存中的对象,变量实际保存的是一共指针,这个指针指向另一个位置
null和undefined区别
- null 只有一个值,是null,不存在的对象,表示一个空对象指针
- undefined只有一个值,是undefined。没有初始化。undefined是从null中派生出来的
- 简单理解就是:undefined是没有定义的,null是定义了但是为空!
检测数据类型的方法:
1. typeof
typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。
返回的结果用该类型的字符串(全小写字母)形式表示
包括以下 7 种:number、boolean、symbol、string、object、undefined、function 等。
//1 typeof
console.log(typeof "");
console.log(typeof 1);
console.log(typeof true);
console.log(typeof null);
console.log(typeof undefined);
console.log(typeof []);
console.log(typeof function(){});
console.log(typeof {});
console.log(typeof Symbol()); //symbol
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
结果:
从上述结果中可以看到,typeof对于基本数据类型的判断是没有问题的,但是遇到了引用数据类型
是不起作用的,只能返回一个object。(typeof(null)输出object 是因为在js中,null表示一个空对象指针)
- 对于基本类型,除 null 以外,均可以返回正确的结果。
- 对于 null ,返回 object 类型。
- 对于 function 返回 function 类型。
2、instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。
在这里需要特别注意的是:instanceof 检测的是原型,我们用一段伪代码来模拟其内部执行过程:
instanceof (A,B) = {
var L = A.__proto__;
var R = B.prototype;
if(L === R) {
// A的内部属性 __proto__ 指向 B 的原型对象
return true;
}
return false;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
从上述过程可以看出,当 A 的 proto 指向 B 的 prototype 时,就认为 A 就是 B 的实例
我们来看几个例子
//instanceof console.log([] instanceof Array) // true console.log({} instanceof Object) // true console.log(new Date() instanceof Date) //true
<span class="token keyword">function</span> <span class="token function">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span><span class="token punctuation">}</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">instanceof</span> <span class="token class-name">Person</span><span class="token punctuation">)</span> <span class="token comment">//true</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token keyword">instanceof</span> <span class="token class-name">Object</span><span class="token punctuation">)</span> <span class="token comment">//true</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">instanceof</span> <span class="token class-name">Object</span><span class="token punctuation">)</span> <span class="token comment">//true</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Person</span> <span class="token keyword">instanceof</span> <span class="token class-name">Object</span><span class="token punctuation">)</span> <span class="token comment">//true</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"1"</span> <span class="token keyword">instanceof</span> <span class="token class-name">String</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//false</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">1</span> <span class="token keyword">instanceof</span> <span class="token class-name">Number</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//false</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token boolean">true</span> <span class="token keyword">instanceof</span> <span class="token class-name">Boolean</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//false</span>
weixin_45184120: 重启一下vscode
Bwcx_lzp: 写的很不错
舒霞: 好哒,万分感谢哦
angula_: ctrl+shift+p然后才能搜索哦,如果还不行的话,确认成功安装重启一下vscode再次尝试
舒霞: 作者大大,codesign怎么搜不到呢?