javascript中不可变的原始值(undefined null number(数字) 布尔值 字符串)
一、原始值
1 原始值是不可更改的,例如数字和·布尔值,任何方法都无法更改(或突变)一个原始值,虽然字符串有时候看起来不是那么明显,字符串中的所有方法看起来返回了一个修改的字符串,实际上它返回的是一个新的字符串
var a = 'haha';
a.toUpperCase(); // 返回'HAHA',但并没有改变a的值
a // => 'haha' 原始字符串的值并未改变
2 原始值的比较是值的比较,它们值相等时才相等。比较两个单独的字符串时,只有它们的长度相等且每个下标对应的字符都相等时,js中才认为它们相等
二、可变的对象(包括数组和函数)
1 对象的值是可以修改的
var obj = {
a: 1,
b: 2
}
obj.a = 11 // 修改对象中的属性值来修改对象
obj.c = 3 // 再次更改对象,为它添加新属性
var arr = [1,2,3]
arr[0] = 11 // 修改数组,将下标为0的元素修改
arr[3] = 33 //添加新的元素
2 对象的比较并非值得比较,即使两个对象属性和值一样,它们也不是全等的,因为它们在计算机的存储位置也不相同,它只是看起来一样。
var obj1 = {
a: 1
}
var obj2 = {
a:1
}
obj1 === obj2 // => false 两个单独的对象永远不相等
var arr1 = [], arr2 = []
arr1 === arr2 // =>false 两个单独的数组永不相等
通常将对象称为引用类型 当两个对象引用用一个基对象时是全等的
var arr = [1,2,3];
var arr1 = arr;
arr1[0] = 11; // 修改数组元素
arr[0] // => 11 数组arr改变
arr1 === arr // => true
前端小白,请多指教 ------vicki