1. 基本数据类型(值类型)
基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
2. 引用数据类型
引用数据类型:对象(Object)、数组(Array)、函数(Function)。(数组和函数都是属于对象的数据类型)
3. NaN是什么类型?
NaN是一个数值类型(number),但不是一个具体数字
console.log(typeof NaN) // number
4. null和undefined区别
null和undefined区别:null会被隐式转化为0,不容易发现错误,先有null后有undefined,undefined就是为了填补之前的坑(null表示一个空对象指针,转化为数值为0;undefined转化为数值是NaN)
5. Symbol用法
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。
const a = Symbol();
console.log(a); // Symbol()
const b = Symbol("test");
console.log(b); // Symbol('test');
const c = Symbol();
console.log(c == a); // false
console.log(c.toString()); // 'Symbol()'
var mySymbol = Symbol();
//第一种写法
var a1 = {};
a1[mySymbol] = "Hello!";
console.log(a1[mySymbol]); // Hello!
//第二种写法
var a2 = {
[mySymbol]: "Hellow!",
};
console.log(a2[mySymbol]); // Hellow!
//第三种写法
var a3 = {};
Object.defineProperty(a3, mySymbol, { value: "Hellow!" });
console.log(a3[mySymbol]); // Hellow!
Symbol需要注意:
- symbol函数前不能使用new关键字,否则会报错,这是因为symbol是原始数据类型,而不是对象,所以不能添加属性
- symbol可以接受一个字符串作为参数,表示对Symbol的描述,主要是在控制台显示时容易区分。这个参数可以不加,如果不加在控制台输出就是两个Symbol()不利于区分,加上参数就是为了加以区分。
- Symbol是唯一的与谁都不相等
- Symbol不能与其他值进行运算,否则会报错
- Symbol 可以显示的转为字符串,布尔值,但是不能转为数字,转为数字会报错
- 由于每一个Symbol都不相同,那么可以作为标识符作为对象的属性名,保证不会出现同名的的属性
- Symbol值作为对象的属性名时不能使用点运算符,同理,在对象的内部使用Symbol值时也必须放在方括号中