JS数组与对象赋值问题
最近有友遇到⼀个问题 就是给数组赋值遇到的⼀些问题 正好⾃⼰也不了解 就去⽹上查了⼀些资料 在这⾥做⼀下总结
问题1:
把 a 赋值给 b ,改变 b 的值发现 a 的值也被改变了,这和我们想象的不⼀样,为什么呢?
// 1. 数组
var a =[1,2];
var b = a;
b[0]=3;怎么给数组赋值
console.log(a);
// [3,2]
// 2. 对象
var a ={
name:'mina',
age:'16'
}
var b = a;
b.name ='lokka';
console.log(a);
// {
// name: 'lokka',
// age: '16'
// }
—
—这是因为数组、对象、函数等都是引⽤类型
JS分两种数据类型:
基本数据类型:Number、String、Boolean、Null、 Undefined、Symbol(ES6),这些类型可以直接操作保存在变量中的实际值。
引⽤数据类型:Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)
把 a 赋值给 b ,就相当于把 a 的内存地址指向 b ,即 a 和 b 指向同⼀内存地址, 改变了 b 就相当于改变了 a
问题2:
⽤ es6 的扩展运算符 来赋值就不会改变原数组,这⼜是为什么呢?
var a =[1,2];
var b =[...a];
b[0]=3;
console.log(a);// [1,2]
——这是因为,扩展运算符相当于遍历了数组 a 的值,所以b 是⼀个新的数组,内存地址不是同⼀个,所以改变 b 不会影响数组 a
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论