1、原始类型与引用类型
类型 | |
原始类型 | 数值、字符串、布尔、null、undefined |
引用类型 | 对象(Array、Date、RegExp、Math、自定义对象、第三方库引入对象) |
2、赋值的区别
类型 | 区别 |
原始类型赋【值】 | 值发生变化,只影响一个变量。 |
引用类型赋【引用】 | 但引用指向的对象发生变化,所有指向这个对象的变量都会发生变化 |
// 1、原始类型赋值 let str1 = "Hello"; let str2 = "World"; str1 = "jasmine"; console.log(str1); // 输出结果:jasmine console.log(str2); // 输出结果:World // 2、引用类型赋值 let stu1 = { name: "jasmine" }; let stu2 = stu1; stu1.name = "qiqi"; console.log(stu1.name); // 输出结果:qiqi console.log(stu2.name); // 输出结果:qiqi
3、类型比较的区别
类型 | 区别 |
原始类型 | 比较值是否相等 |
引用类型 | 比较引用是否指向同一对象 |
// 1、原始类型的比较(值是否相等) let str1 = "Hello"; let str2 = "Hello"; console.log(str1 === str2); // 输出结果:true // 2、引用类型的比较(引用是否指向同一对象) let stu1 = { name: "jsmine" }; let stu2 = { name: "jsmine" }; console.log(stu1 === stu2); // 输出结果:false
4、函数传参的区别
类型 | 区别 |
原始类型 | 原始类型作为参数,函数内的操作不影响实参的值 |
引用类型 | 引用类型作为参数,函数内的操作会影响实参的值 |
// 1、原始类型传参 function fun(n) { n = 100; } let n = 10; fun(n); console.log(n); // 输出结果:10 // 2、引用类型传参 function fun1(arr) { arr.push(10); } let arr = [1, 2, 3]; fun1(arr); console.log(arr); // 输出结果:[1, 2, 3, 10]