JavaScript基础之值传递和引用传递

发布时间:2019-03-14 整理:脚本之家 作者:未知
脚本之家收集整理的这篇文章主要介绍了JavaScript基础之值传递和引用传递脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随脚本之家小编过来看看吧!

js的值传递和引用(地址)传递

首先总述一下:
js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,
js的引用数据类型(object,array,function)进行引用传递,其实底层都是对象

废话不多说,下面直接上代码

值传递例子:

1 var a = 10;
2 var b = a;
3 b = 5;
4 console.log('a:'+a,'b:'+b) // a:10 b:5

同样的,如果你改变其中a的值,a的值变化,b不会改变。

基本数据类型的赋值传递,变量直接包含的是一个值,你可以理解这个赋值过程为把你电脑里的一个文件(假设本来在c盘)复制到了D盘,然后你就很清楚知道,它两是完全不相干的两个文件(复制但是没修改前只是内容一样)了,没有关联性的独立文件,不会相互干扰。(不同地址路径下相同的值)

引用传递例子如下:

1 var obj = {a:1,b:2,c:3};
2 var objed = obj;
3 objed.a = 0;
4 console.log('obj:',obj,'objed:',objed) // obj: {a: 0,b: 2,c: 3} objed: {a: 0,c: 3}

obj对象赋值给变量objed,需要理解的是,对象是以地址的形式存放在内存中的。还是用简单易懂的话说吧,变量obj存放的不是a,b,c这三个值,而是它这个整体对象占用的一个空间(有些人用类似堆和栈的思路来对比理解),你每看到一个对象(非基本数据类型皆是对象),你看到的应该是一个空间,便于理解,可以自己取个名字“#001”(随便叫什么都行)。那么变量obj就是一个叫“#001”的地址空间,这个空间里面有a,c三个东西,且有它的值。objed变量被赋“值”是这个空间“#001”。所以obj和objed实质上都是叫“#001”的空间,不论你是修改obj里内容还是objed里的内容,实质上都是“#001”空间里的那个它。所以修改变量obj的内容和objed的内容都是同一个东西,obj和objed都是一样的内容包含。同样用使用电脑来理解,就是你将你的文件放到编辑器上修改创作,你会发现,你修理和鞭打的是你编辑器里的代码,但是你磁盘里的文件同样在挨打

总结

以上是脚本之家为你收集整理的JavaScript基础之值传递和引用传递全部内容,希望文章能够帮你解决JavaScript基础之值传递和引用传递所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

标签: