JS 栈和堆的小思考

<script>
var x = 1;
function func(){
x++;
}
func();
document.write(x);  //2

</script>


<script>
var x = 1;
function func(){
x++;
}
func(x);
document.write(x); //2
</script>


<script>
var x = 1;
function func(a){
x++;
}
func(x);
document.write(x); //2
</script>


<script>
var x = 1;
function func(x){
x ++ ;
}
func(x);
document.write(x);  //1
</script>


//var x;  变量【x】是建立在栈里面的

//如果在函数内找不到【x】就会去外层寻找,只有第四种是传进来一个【x】可以直接得到的,会对函数内部的【x】进行操作,不会影响到外面的x。


<script>
var obj = { x:1};
function func(obj){
obj.x ++;
}
func(obj)
alert(obj.x);  // 2
</script>

<script>
var obj = { x:1};
function func(a){
a.x ++;
}
func(obj);
alert(obj.x);  //2
</script>

//对象的数据是存放在堆里面的

//通过上两个可以知道  func()里面可以是obj(对象),function里面对对象进行操作,函数里面会对对相同进行影响

<script>
var obj = { x:1};
function func(a){
a ++;
}
func(obj.x)
alert(obj.x);   // 1
</script>

//这一种是对obj.x进行方法,这时函数内进行操作不会对对象里面进行影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值