问题描述:
第一种情况
.js中
var position=20
function changevalue(){
var p=position
p+=2
console.log(p)
console.log(position)
}
.wxml中
<button bindtap="changevalue">改变值<button>
输出时,当不断点击按钮,p的值一直是22,position的值一直是20
第二种情况
.js
var position={
x:20,
vx:2
}
changevale(){
var p=position
p.x+=p.vx
console.log(p.x)
console.log(position.x)
}
.wxml
<button bindtap="changevale">改变值</button>
输出时,当不断点击按钮,p.x的值为22,24,26.....不断增加,position.x的值为22,24,26....也一直不断增加。
原因分析:
首先理解栈区和堆区
栈区:是由编译器自动分配内存与释放内存的区域,用于存放函数的参数值,局部变量,随着函数动态调用与返回,栈区的数据将动态变化
堆区:可由主动开发人员自己调用函数向计算机申请的一块内存区域,使用完之后可由程序调用函数自主释放
全局区(static):这部分保存全