作为整理收藏夹系列的第一篇内容,来自18年的2018 年腾讯前端一面总结(面向 2019 届学生)
JS的数据类型
基础类型
:Undefined,Null,Number,String,Boolean,Symbol,Bigint;
引用类型
:Object;
两张类型的区别:
基础类型:
-
存在栈内存中,存储的是值本身;
-
赋值或传参时是重新拷贝值。
-
变量的值不可更改,只能被重新赋值;
// 基础类型示例 let str = "hello"; str[0] = "H"; // 无效,字符串不可修改 console.log(str); // "hello" // 只能重新赋值 str = "Hello"; console.log(str); // "Hello" let num = 42; num = 100; // 重新赋值,不是修改原值 console.log(num); // 100
引用类型:
-
存在堆内存中,存储的是对象在堆内存中的地址(指针);
-
赋值或传参时拷贝的是“引用”(指针),多个变量指向同一块内存。
-
通过引用可以修改对象的内容;
// 引用类型示例 let obj = { name: "张稀饭", age: 18 }; let obj2 = obj; // 拷贝引用,指向同一块内存 // 通过引用修改对象内容 obj.name = "李稀饭"; console.log(obj); // { name: "李稀饭", age: 18 } console.log(obj2); // { name: "李稀饭", age: 18 } - 两个变量都指向同一对象 // 数组也是引用类型 let arr = [1, 2]; let arr2 = arr; arr.push(3); console.log(arr); // [1, 2, 3] console.log(arr2); // [1, 2, 3] - 两个变量都指向同一数组