var arr = [ 'oIouB4s-1584018124859',
'你',
'15564985985',
'上海市上海市黄浦区哈哈哈哈哈哈222',
'',
'',
'',
'2020-03-12 21:02:04
]
变量arr刚开始的数据如上所示,也没有什么地方再次去修改它,循环了一圈后,怎么就多了一个数据????????
打印的数据如下
好尴尬,截图的时候刚好歌词也是那句,没错我的逻辑被颠覆了!!!
为了追求真理,我在小程序端控制台又试了一下,也是这样,难道真的是我错了??
莫非这个变量间的赋值是附地址?
特意附上小程序端代码
var k = [
1,
2,
6,
8,
9
]
for(let i =0;i<3;i++){
let m = k
console.log(k)
m.push(144)
for(let j=0;j<4;j++){
// console.log(j)
}
}
我觉得是我错了,一直理解成变量值传递,原来这些结构是地址传递,刚用python试了一下,也是这样的。
所以各位童鞋,避免再走我的这个坑,由我系统的给大家解释下这个现象
解惑
首先需要理解JavaScript中给变量赋值,是引用还是复制。
1、JavaScript中值的类型
JavaScript中的值分为2大类:基本类型和引用类型。
基本类型:
Number(数字类型)、String(字符串类型)、Boolean(布尔类型)、Undefined、Null
引用类型:
函数(Function)、数组(Arrary)、日期(Date)、正则(RegExp)、错误(Error)
注意:所有的引用类型都是对象,也就是Object对象下的一个类。
2、值和引用
在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。
对基本类型,是按值访问的,即通过值复制的方式来赋值和传递。
对引用类型,是按引用访问的,即通过引用复制的方式赋值和传递。在操作对象时,实际上是在操作对象的引用,而不是实际的对象。
说到这里整篇文章就结束了,希望对大家有所帮助
已经把答案写在了上面的文末,希望对大家有所帮助,记得回来点赞噢~
k =6
这样子也会报错的啊