javascript - 这道题结果为什么不是2|1 ,a不是全局变量吗?

查看:65
本文介绍了javascript - 这道题结果为什么不是2|1 ,a不是全局变量吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var a = {
num:'1'
};

var b = {
num:'2'
};

function change(obj){
obj.num = '3';
obj = b;
return obj.num;
}

var result = change(a);
console.log(result + ' | ' + a.num); // 2 | 3

解决方案

`var result = change(a)
调用了 function change(obj),传入参数为a,这里传入的参数a其实是一个指针,指向了a对象;
此时对局部变量 obj中的num进行操作 ,就是直接修改 a 中的num;
此时 a = {num : '3'};
对obj再赋值 obj = b;此时其实是修改了指针,从a指向了b,再return就是b里的2了;
打印出来的就是2|3 了

这篇关于javascript - 这道题结果为什么不是2|1 ,a不是全局变量吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆