js 种有两种变量类型:基本类型和引用类型。可能会让你联想到“”堆栈“”或者“”指针“”的概念。
一、基本类型
包括:number、string、boolean、null、undefined
1、基本类型理解:等于又开了一家一模一样的店,之后店内的所有东西和之前的没啥关系;
function stores() {
var store1 = 'KFC';
var store2 = store1;
store1 = 'M';
console.log(store2); // KFC
};
说明: 把一个基本类型传递给另一个变量时,其实是分配了一块新的内存空间,因此之前的值改变不会影响另一个变量有影响;
2、不能给基本类型添加属性和方法,例如:
var store = 'KFC';
store.time = '20100212';
store.method = function(){//...}
console.log(store.time ) // undefined
console.log(store.method) //undefined
3、基本类型的比较是值的比较,只有值相等的时候才相等;
var a = 'KFC';
var b = 'KFC';
console.log(a === b); //true
二、引用类型
除了上面的几种基本类型外就是引用类型了,如:对象、数组、函数。
1、引用类型理解:同一个店铺有多把钥匙,只要一个人进入了店铺改了里面的东西,另一个人再进去看到的也是改变之后的了。
function stores() {
var store1 = ['KFC'];
var store2 = store1;
console.log(store2[0]); //KFC
store1[0] = 'M';
console.log(store2[0]); //M
}
因为引用类型指向的是同一个地址,所有一个改变后另一个也会改变。
2、引用类型的比较是引用的比较
var person1 = {};
var person2 = {};
console.log(person1 == person2); // false
说明:引用类型时按引用访问的,换句话说就是比较两个对象的堆内存中的地址是否相同,那很明显,person1和person2在堆内存中地址是不同的