红宝书 第4章整理——变量+内存管理

1、变量

① 变量分类:基本类型值:简单数据段,就是最基本的5种数据类型,不能给他们添加属性
                       引用类型值:即对象,可以为其添加方法

   两种区别:1、保存方式不同:基本类型值在内存中占据固定大小的空间,会被保存在

                                                引用类型值时对象,会保存在

                                               基本类型正常,对象只能操作对他的引用,不能直接操作对象本身

                    2、 复制变量值方式不同:基本变量复制,var num1 = 5;
                                                var num2 = num1;
                                                会创建一个新的值,与原值互相不干预
                                   引用型(对象)复制,var obj1 = new Object();
                                                                  var obj2 = obj1;
                                                                  实际上是复制了一个指针,这个指针指向存储在堆中的对象
                                                                  此时原值与新值都是指向同一个对象的指针引用,所以改变其中一个,另一个也会跟着变。
②  js中变量超级随意,不像别的语言定义变量要保存数据类型值,js的变量在脚本的生命周期内,值与类型都可以随意转变。
③  检测类型:typeof()
④  作用域链:就是一个变量的作用域,记住:子可以访问父中的变量,父不能访问子中变量
              延长作用域链方法:with(...)  //with函数类比link,把其他的东西连接到此处
                                              try-catch    //抛出局部错误到全局

⑤  js无块级作用域

if(true){
  var color = "blue";
}
 
alert(color);   //"blue" 

for(var i =0;i<10;i++){
  dosomething(i);
}

alert(i);  // "10"

在别的语言中,color与i会只作用于花括号里,但是在js中,没有块级作用域,就是相当于花括号不存在,color与i在此处相当于全局变量。

2、内存管理

① 垃圾收集:js自带垃圾收集机制。最常用的方法:标记清除。变量进出环境时会被打标记。

                                                           另一种方法:引用计数

② 管理内存:对于局部变量,离开作用域自己被回收,所以不用管

                        对于全局变量和全局对象,不用了最好把它设置为null

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值