目录
课程主讲:
-
ECMA262数据类型的详细剖析:
-
数据类型的标准定义
-
Symbol和BigInt的实践运用
-
typeof检测的底层机制
-
-
数据类型间相互转换的权威解读:
-
Number/parseInt底层处理机制
-
“相等”比较中的类型转换
-
JS中的装箱和拆箱操作
-
-
几道互联网大厂的经典面试题
一、数据类型分类:
-
原始值类型「值类型/基本数据类型」
-
number 数字
-
string 字符串
-
boolean 布尔
-
null 空对象指针
-
undefined 未定义
-
symbol 唯一值
-
bigint 大数
-
-
对象类型「引用数据类型」
-
标准普通对象 object
-
标准特殊对象 Array、RegExp、Date、Math、Error……
-
非标准特殊对象 Number、String、Boolean……
-
可调用/执行对象「函数」function
-
new Number 叫做 非标准特殊对象 !
二、typeof数据类型检测的底层机制
Symbol 创建一个唯一值 不能被new
使用场景:
+ 给对象设置“唯一值”的属性名
+ 字符串
+ Symbol类型
+ Map新的数据结构:可以允许属性名是对象(各种类型)
+ Symbol.asyncIterator/iterator/hasInstance/toPrimitive/toStringTag...是某些JS知识底层实现的机制
+ 在派发行为标识统一进行管理的时候,可以基于symbol类型的值,保证行为标识的唯一性
+ ...
*/
let a1 = Symbol('AA');
let a2 = Symbol('AA');
let a3 = a1;
console.log(a1 === a2); // false
console.log(a1 === a3); // true
三、Sybol 各种类型举例:
/* let key = Symbol('BB');
let obj = {
n: 10,
10: 100,
true: 200,
[Symbol('AA')]: 300,
[Symbol('AA')]: 600,
[key]: 400
};
console.log(obj[Symbol('AA')]); // undefined
console.log(obj[key]); // 400 */
/*
BigInt 大数类型
Number.MAX_SAFE_INTEGER 9007199254740991 JS中的最大安全数
Number.MIN_SAFE_INTEGER -9007199254740991 最小安全数
超过安全数后,进行运算或者访问,结果会不准确!!!
解决方案:
1. 服务器返回给客户端的大数,按照“字符串”格式返回!
2. 客户端把其变为 BigInt ,然后按照BigInt进行运算
3. 最后把运算后的BigInt转换为字符串,在传