javascript指针

其实起这个题目不太好,有点标题党的嫌疑,这里不会介绍在js的世界中,内存中的堆和栈是怎么来存储对象和怎样相互引用的。。。


问题从一小段代码开始

function foo(){
	console.log(1);
	foo=function(){
		console.log(2)
	}
}
foo()
//1
foo()
//2
脑图过一下貌似就是这两个结果,所以没有什么疑问


function foo(){
	console.log(1);
	foo=function(){
		console.log(2)
	}
}

var bar=foo;
bar()
//1
bar()
//1
这里的结构就有点出乎意料了,为什么和上面的结果有所出入那。

把第二段分析一下~。~

首先在内存中存在一个foo的引用名和foo引用的对象(就是后面的那个function)

然后另外一个引用名也只想了那个function(同foo应用的对象相同)

执行bar以后,foo的引用名被更改引用到新建的一个匿名函数上(bar还是引用之前的那个function)

再执行1一千遍还是和第一次一样的结果-_-


之所以犯了这样一个错误是因为请记住,引用是不会引用的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值