不可变的原始值与可变的对象引用

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值