微信小程序学习记录遇到的问题:普通变量与用{}定义的变量区别(也就是各变量在内存存储的区别)

本文探讨了在微信小程序中,普通变量与使用{}定义的变量在内存存储上的区别。通过两种情况的分析,揭示了栈区和堆区的工作原理,以及如何影响变量的值。在第一种情况下,变量独立存储,不受影响;而在第二种情况下,引用类型的变量共享同一堆内存对象,修改其中一个会影响另一个。
摘要由CSDN通过智能技术生成

问题描述:

第一种情况

.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):这部分保存全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值