基础类型和复杂类型
基础类型:number string boolean undefined null
引用类型:object array function
基本类型和复杂类型区别:
1.存储不同:基本类型的存储,是将值存到栈中;复杂类型的存储,将值存到堆中,将堆的地址存到栈中
2.赋值不同:基本类型的赋值,将值复制一份放到另一个变量空间中;复杂类型的赋值,将栈中存的地址复制一份放到另一个变量空间中 - 两个变量共用一个数据地址
3.全等比较不同:基本类型在比较栈中存的值;复杂类型数据比较的是栈中存的地址是否全等
解决基础类型和复杂类型的赋值区别的方法:
var arr = ['a','b','c'];
// 希望brr和arr一样,但是不要共用一个地址
// 1.遍历一个一个放进去
var brr = [];
for(var i=0;i<arr.length;i++){
brr[i] = arr[i]
}
console.log(arr,brr);
arr[0] = 'f'
console.log(arr,brr);
// 2.使用concat
var brr = arr.concat()
// 3.使用slice
var brr = arr.slice()
// 4.使用JSON转换
var brr = JSON.parse(JSON.stringify(arr));
arr[0] = 'f'
console.log(arr,brr);

浙公网安备 33010602011771号