变量、作用域和内存问题
2017-02-18 14:33:02 0 举报
AI智能生成
登录查看完整内容
变量是计算机程序中用于存储数据的标识符,其值可以在程序执行过程中改变。作用域指的是变量在程序中的可见性和可访问性范围。内存问题是指在程序运行过程中对内存的分配、管理和释放不当可能导致的问题,如内存泄漏、野指针等。合理使用变量、作用域和内存管理能有效提高程序的性能和稳定性。
作者其他创作
大纲/内容
变量、作用域和内存问题
activity
ranklist
聊天
popularity
动态
temporary
4.1、基本类型和引用类型的值
基本类型(5中基本数据类型):按值访问,可以操作保存在变量中的值
引用类型:引用类型保存在内存中的对象。js不允许直接访问内存中的位置,操作对象实际是在操作对象的引用而不是实际的对象
区别
增加属性
引用类型:可以添加属性
基本类型:可以添加属性,虽然不会出错,但是 使用的时候是undefined
复制变量值
var num1 = 5;var num2 = num1;
num1中保存的值是5,当使用num1的值来初始化num2时,javascript会新开辟一个空间,然后把num1的值复制给num2。这两个变量是完全不一样的。
var obj1 = new Object();var obj2 = obj1;obj1.name = \"欧丽珊\";
变量obj1保存了一个对象的新实例,obj1是一个指针,指向这个新实例,复制的时候,在栈里新建一个空间,然后在这个空间里放上obj1这个指针的副本,obj1和obj2实际上都指向了同一个空间
new Object()就是在堆里开一个空间,接着在栈开一个空间,这个空间存放指向堆上的新空间的指针,即new会同时开两个空间
检测类型
基本类型用typeof
引用类型用instanceof
person instanceof Object;colors instanceof Array;pattern instanceof RegExp;
4.2执行环境及作用域
what
每个执行环境都有一个与之关联的变量对象,环境中定义的所有半两和函数都保存在这个对象中,虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。
过程
全局执行环境是最外围的一个执行环境,在web浏览器中这个全局变量就是window对象,某个执行环境中的所有代码执行完后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁,一个函数就是一个作用域,作用域相关联就成为一条作用域链
4.2.2 没有块级作用域
for(var i = 0;i<10;i++){ }alert(i);//10
对于有块级作用域的语言来说,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境之中。而对于js来说,由for语句创建的变量i即时在for循环结束后,也依然会存在于循环外部的执行环境中。也就是说,js的变量是与执行环境同在的。
使用var声明的变量会自动被添加到最接近的环境中,如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境
金币系统
CMS
fans
coupon
tag
0 条评论
回复 删除
下一页