js笔记3之变量的复制,参数传递与垃圾回收机制

	1...变量的复制
	变量的数据类型,一共2种,一种是基本数据类型:Boolean,Number,string,null,undefined一共五个
	另一种是引用类型:object
	基本类型的复制
	例子: var  str = "你好我是str";
 	     var  copyStr = str;
	结果:copyStr的值是"你好我是str",其复制在内存中实际是开辟了一个新的内存
 	         变量        内存区间             值
   	         str   ----->    1    ----->    你好我是str
 	        copyStr----->    2    ----->    你好我是str

	引用类型的复制
	例子: var  obj = new object();
           obj.name = "张三"
   	   var  copyObj = obj;
	结果:copyObj.name的值是"张三",但是其复制实质是是两个变量指向同一个区间,
    	     两个变量的任何一个变量的值地改变都会影响另一个变量的值.

  		  变量        内存区间
   		  obj   ----->    1
   		  copyObj----->   1

	2...变量作为函数参数的传递
	在绝大部分语言中参数传递有按值传递引用传递两种
	按值传递:把值进行复制后传递
	引用传递:将指针直接传递给函数
                                                                                                      	在JavaScript中,函数的参数传递都是按值传递
	由于引用类型的值的复制的本质是指向同一内存,因此其在函数中的变化会影响外部环境的值.
	但是这并不意味着引用类型的值的作为参数传递就是引用传递,其本质依然是按值传递.

	3..JavaScript的内存回收机制
	
	定时自动回收机制
	主要采用的算法:
	标记清除(主流算法):变量进入执行环境,则添加标记,退出环境,重置标记.时间一到,由回收机制回收
	引用计数:变量被引用,则引用次数加1,引用该变量的对象引用别的变量一次,则减1.
	弊端:果两个对象变量互相引用,则永远无法清除.
	例: var obj.name = obj2.name;
   	 var obj2.name  = obj.name;
	
	对于全局变量,为了方便回收,在每次用完以后,我们可以对其进行置空
		例如:  var  a = full;
	方便回收机制进行回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值