数据类型二三事
a)数据的类型
数据类型分为简单数据类型(原始数据类型)和复杂数据类型(引用数据类型)。
简单数据类型:null, undefined, boolean,number,string,symbol
复杂数据类型:object
b)判断数据类型的方法
原始数据类型 typeof,支持检测的类型有undefined,boolean,string,number,object,function,symbol
复杂数据类型 instanceof(用于检测某个对象是否出现在原型链上)
通用的Obejct.prototype.call(变量)
const str = "hello";
const num = 123;
const bool = true;
const obj = {a: 1};
const arr = [1, 2];
console.log(Object.prototype.toString.call(str)); // "[object String]"
console.log(Object.prototype.toString.call(num)); //
console.log(Object.prototype.toString.call(bool));
console.log(Object.prototype.toString.call(obj)); // "[object Object]"
console.log(Object.prototype.toString.call(arr)); // "[object Array]"
特殊: typeof null === 'object',原因:null保存的是一个空对象指针
c)数据类型转换
转换成Boolean
| 数据类型 | 显示true | 显示false |
|---|---|---|
| String | 非空字符串 | 空字符串 |
| Number | 非零数值 | 0或者NaN |
| Object | 任意对象 | null |
| Undefined | undefined |
转换成Number
| 数据类型 | 显示 |
|---|---|
| String | 包含数字,则显示对应的数字(不限于,浮点数,不同的进制数)空字符串-0除上述以外,返回NaN |
| Boolean | true-1,false-0 |
| null | 0 |
| undefined | NaN |
d)特殊数据Symbol
ES6新增数据,是一个符号,且必须保证其唯一性,不可变。
用处:1.使用符号作为属性,这样命名即使存在有同样的属性,也不会覆盖,无论这个属性是字符串还是符号
const obj = {a: 1};
const a = Symbol('a');
obj[a] = '123';
console.log(obj)
2.全局符号注册表
3.内部符号,用户可以暴露一些语言的内部行为。所有的内置符号都是不可以写,不枚举,不可配置的。