Maison > Questions et réponses > le corps du texte
function clock() {
var count = 0
setInterval(function () {
count++
}, 500)
return count
}
var zero = clock()
function clockWorking() {
var localObj = { count: 0 }
setInterval(function () {
localObj.count++
}, 500)
return localObj
}
var object = clockWorking()
阿神2017-04-10 17:36:37
区分基本类型值和引用类型值。
a = 1;
b = a;
a = 2;
console.log(b); //1
将一个基本类型值复制给另一个变量,另一个变量就会产生这个基本类型值的一个副本。赋值以后,a
和b
就没有关系了。
a = {x:1};
b = a;
a.x = 2;
console.log(b.x); //2
引用类型值保存的是一个指针,将引用类型值赋值给另一个变量,复制的其实是这个指针,这个指针指向这个引用类型所有属性和方法保存的地址。a
和b
其实都指向了同一个地址。所以,当改变其中一个的属性,另一个的属性也会同样改变。
你列举的第一个例子,zero
复制了count
的值,之后count
的值随着定时器不断增加,但zero
与此无关了,所以zero
一直等于最开始count
的值,也就是0
。
第二个例子,object
复制了引用类型localObj
,所以localObj.count
改变,object.count
也跟着改变,不断打印object.count
的值,你会发现这个值会一直增大。