JS-变量存储
1.存储(变量)
JS中变量是存在栈内存中
JS中的内存分两种:栈内存、堆内存
栈内存:存放变量
堆内存:存代码块(object和function)
var fn=function()和function fn()这两个定义函数是不一样的
JS特殊在它是一个弱类型语言
在定义变量的时候没有明确的指明它的数据类型,而是由后面赋的值决定它的类型
var a="" var=12; var a=[];var a={}
java是强类型语言
定义变量的时候就指明它的数据类型,后面的赋值就不能随便赋值了,必须和数据类型保持一致
string a="12"; number a=12; boolean a=true;
JS内存存放机制
1)基本数据类型:string number boolean undefined null
如果变量后面的值是基本数据,就直接存在栈内存。栈里面要求变量不能重名,如果重名就会覆盖前者
2)引用数据类型:object array function
如果变量后面是引用数据类型,将后面的代码块存在堆内存中,然后将堆内存中的内存地址赋值给前面的变量
3)其他:Data Errey Math
备注:浏览器在执行js代码前,找出所有的关键字var和function将定义的变量存在内存中,存放完毕之后按照自上向下的顺序一步一步的执行,当使用某个变量的时候(console.log()),就会向内存查找,有就使用,没有就会报错(xxx is not defined),如果是赋值,就相当于给window添加了一个属性且赋值
2.销毁内存
浏览器自身每经一段时间,自动去检测js中没有用的内存,把它销毁掉
JS中的人为销毁变量,给这个变量赋值为null a=null;null的本质是空指针
内存销毁的顺序是:先存后销
最新文章
- localStorage使用
- GIT 查看/修改用户名和邮箱地址
- 【codeforces 733F】 Drivers Dissatisfaction
- PL/sql developer连接数据库的问题以及oracle数据库中文乱码的问题
- apache-virtual host
- Unity 物理引擎动力学关节
- hdu 1232 畅通工程 解题报告
- JS预解析
- Junit4中的新断言assertThat的使用方法
- Java动态编程---动态代理
- Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
- 如何制作中文Javadoc包,并导入到Eclipse
- 启动tomcat报错com.sun.faces.config.ConfigureListener
- 基于Python实现的死链接自动化检测工具
- mysql group_concat时间用法
- Django的rest_framework的视图之基于ModelViewSet视图源码解析
- android.DataBindingUtil
- svn: E155015: 提交失败(细节如下) 解决办法
- JFR 与 JProfilter Jvmisualvm
- Excel操作之级联菜单
热门文章
- ES的数据结构
- 软件教程 | Jupyter&;stata之stata_kernel攻略
- 了解舵机以及MG996R的控制方法
- python实现移动二级目录下的文件到一级目录
- 病程极短(≤16周)的495例未分化关节炎患者随访2年的结局[EULAR2015_SAT0055]
- Echarts —自定义label标签的样式(formatter,rich,添加图标等操作)
- 四川九联代工M301H hi3798 mv300 mt7668魔百和 强刷和TTL线刷(救砖)经验分享
- PostGIS之维数扩展的九交模型
- 基于C++的OpenGL 12 之多光源
- 地理探测器简介(R语言)