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()
区分基本类型值和引用类型值。
将一个基本类型值复制给另一个变量,另一个变量就会产生这个基本类型值的一个副本。赋值以后,
a
和b
就没有关系了。引用类型值保存的是一个指针,将引用类型值赋值给另一个变量,复制的其实是这个指针,这个指针指向这个引用类型所有属性和方法保存的地址。
a
和b
其实都指向了同一个地址。所以,当改变其中一个的属性,另一个的属性也会同样改变。你列举的第一个例子,
zero
复制了count
的值,之后count
的值随着定时器不断增加,但zero
与此无关了,所以zero
一直等于最开始count
的值,也就是0
。第二个例子,
object
复制了引用类型localObj
,所以localObj.count
改变,object.count
也跟着改变,不断打印object.count
的值,你会发现这个值会一直增大。你直接console.info()两种结果,在谷歌F12里就可以看出来
返回值和返回引用的区别