window.cc = 1
window.cc = !window.cc
console.log(window.cc)
data[0].show = window.cc
console.log(data)
上面的代码运行的时候window.cc的值是一直在变化的,可将window.cc中的值给data(一个对象)console.log(data中被赋值的部分是不会变化的为什么),我知道js有引用,可是想不通这个不管是赋值还是引用都改变了data里面的值了,可是为什么log打印出来的还是不能发生变化
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
JavaScript 中有两种不同的数据类型值,如下:
一类是基本类型值:就是简单的数据值,像布尔值、数字、字符串,还有 NULL / Undefined。这些是按值访问,也就是说,如果你把这样的值赋给其它的,是相当于复制一个新的值
一类是引用类型值。复杂的对象,都是引用类型值。赋值的时候,相当于是赋的引用地址。
你这里,
window.cc先是一个数字,后来是一个布尔值,都是简单类型,所以赋值给data[0].show的时候,是直接复制值,不是传递引用对象。如果你用下面的代码:
就会发现,修改
window.cc.name,data[0].show的值同样会变化。