JS数据类型

83 阅读1分钟

数据类型二三事

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
Undefinedundefined

转换成Number

数据类型显示
String包含数字,则显示对应的数字(不限于,浮点数,不同的进制数)空字符串-0除上述以外,返回NaN
Booleantrue-1,false-0
null0
undefinedNaN

d)特殊数据Symbol

ES6新增数据,是一个符号,且必须保证其唯一性,不可变。

用处:1.使用符号作为属性,这样命名即使存在有同样的属性,也不会覆盖,无论这个属性是字符串还是符号

const obj = {a: 1};
const a = Symbol('a');
obj[a] = '123';
console.log(obj)

2.全局符号注册表

3.内部符号,用户可以暴露一些语言的内部行为。所有的内置符号都是不可以写,不枚举,不可配置的。