JS中的基本类型和引用类型
1.基本类型:number、boolean、string、undefined、 null
2.引用类型:array、object、function、regexp…
一、基本类型
1.基本类型的值是不可变得
var name = 'apple';
name.toUpperCase(); // 输出 'APPLE'
console.log(name); // 输出 'apple'
2.基本类型的比较是值的比较
var a = 1;
var b = true;
console.log(a == b);//true
var a = 'purpro';
var b = 'purpro';
console.log(a === b);//true
由上面可得,基本类型值只比较值是否相等
3.基本类型的变量是存放在栈区的(栈区指内存里的栈内存)当 变量传值时,内存中产生新的副本,即进行克隆
如上,var b = a,在内存中进行一次克隆
二、引用类型
1.引用类型值是可变的
var obj = {
a: 1,
b: 2,
c: 3
};
delete obj.a;
console.log(obj.a) //undefined
2.引用类型的比较是引用的比较,即引用类型进行相等判断时,会比较址是否相等,也就是说它会比较是否为内存中的同一个东西
var obj1 = {
a: 1,
b: 2,
c: 3
};
var obj2 = {
a: 1,
b: 2,
c: 3
};
console.log(obj1 == obj2); // false
console.log(obj1 === obj2); // false
// 在进行引用类型值得的== === 时,JS会比较两个对象是不是内存中的同一个对象
console.log({
} == {
}); // false
console.log({
} === {
}); // false
// 两个空对象在内存中不同的区域
3.当 变量传值时,内存中不产生新的副本,而是让新变量指向同一个对象
不会进行克隆,指向了同一个数组
var arr1 = [1,2,3,4];
var arr2 = arr1; arr1.push(5);
console.log(arr1);
console.log(arr2);
//(5)[1, 2, 3, 4, 5]
//(5)[1, 2, 3, 4, 5]
总结