遇到的问题
1.修改一个变量 另一个变量也随之改变
2.对比两个变量 明明是相同的 但比较的结果是false
基本概念
原始类型:Number String Boolean null undefined
引用类型:Object(Array Data Math ...)
原始类型与引用类型的区别
1.赋值
原始类型赋的是【值】
引用类型赋【的是引用地址】
2.比较 原始类型比较的是值是否相等,引用类型比较的是【引用】
//原始类型的比较
let str1="hello";
let str2="hello";
console.log(str1 === str2);//true
//引用类型的比较
let stu1={name:"xiaoming"};
let stu2={name:"xiaoming"};
// let stu2=stu1;比较才是true 只是两个不同的变量 但是指向同一个引用
console.log(stu1 === stu2);//false 比较的是引用地址,根本不是同一个人
3.函数传参
//原始类型传参
function fun(num){
num=100;//函数内的操作不会影响到实参的值
}
let n=10;
fun(n);
//因为 num 和n这是两个值 互不影响
console.log(n);//10
//引用类型传参
function fun1(arr){
arr.push(10);//函数内的操作会影响到函数外
}
let a=[1,2,3];
fun1(a);
//首先a是[1,2,3]然后之后又push进去一个10最终a=[1,2,3,10]
console.log(a);