JavaScript--变量的作用域及内存问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript--变量的作用域及内存问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1746字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript--变量的作用域及内存问题](/upload/InfoBanner/zyjiaocheng/944/cfbced02a70246f1bf6da3a33d3e353c.jpg)
JS的变量用来存储基本值类型数据与引用类型数据
JS的基本值类型有:Undefined、Null、Boolean、Number、String五种;他们存放于栈内存中,可以直接操作他们的值。
JS引用类型的值是以对象形式存放在堆内存中,JS不允许直接访问堆内存,所以对对象的操作,实际上是在操作对象的引用。
JS的动态属性
引用类型可以为其动态的添加属性和方法、下面代码演示了如何为一个名为person的对象添加name属性:
var person=new Object(); person.name="bobo"; console.log(person.name);
JS的动态属性是给对引用类型数据而言的,对于基本值类型不行。
JS变量的复制
基本值类型数据从一个变量向另一个变量复制后,两个变量相互独立,对他们进行操作互不影响。
引用类型数据从一个变量向另一个变量复制后,两个变量仍然引用的是同一个对象,所以改变其中一个变量,就会影响另一个变量。
var person=new Object(); person2=person; person.name="bobo2"; console.log(person.name+"---"+person2.name);//bobo2---bobo2
JS执行环境与作用域
JS执行环境中包含变量与函数,最大的执行环境称为全局环境;
JS的每个函数都有自己的执行环境,函数一经执行就会被压进环境栈中,函数执行完毕后会将其从环境栈中弹出。将执行流控制权交给之前的执行环境。
代码在执行过程中,会创建变量的作用域链,作用域是为了保证所有变量与函数能够被有序地访问。
下面代码演示了 当我们在函数中使用某变量时,若在当前环境中找不到改变量,那么就会从当前环境沿着作用域链一级一级搜索,直到搜索到为止。搜不到的话就会产生错误。
var inputname="bigboss"; function Changename() { if (inputname=="bobo") { inputname="bigboss"; }else { inputname="bobo"; } } Changename(); console.log(inputname);//bobo
当我们在if语句中定义变量或者在for语句中定义变量都会使变量存在于全局环境中。
if (true) { var currentvalue=10; } console.log(currentvalue);//10 for (var oo = 0; oo < 15; oo++) { //dosomething } console.log(oo);//15
管理内存
在定义并使用完引用变量后,若该数据不再使用可见该数据设置为null,来解除引用。
内容总结
以上是互联网集市为您收集整理的JavaScript--变量的作用域及内存问题全部内容,希望文章能够帮你解决JavaScript--变量的作用域及内存问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。