JS传参时值传递与引用传递的区别
2020-03-29 13:25
561 查看
基本类型&引用类型
基本类型(值类型):undefind、null、boolean、number、string;
引用类型:在逻辑上等价于其他程序语言的类;如:Array、Object、Function、Date…
本质区别
1.基本类型的变量保存变量值本身,而引用类型的变量保存变量所在内存地址;
2.基本类型的变量在内存中占用的存储空间固定,即,在栈内开辟一块以变量名命名的固定存储空间;而引用类型需要栈和堆共同协作,在栈内开辟一块以变量命名的存储空间,该空间内存放指针(堆内存的地址),堆内存放数据。
3.基本类型变量间的赋值时传递栈内数据;引用类型对象间的赋值时传递栈内指向的堆地址;
代码演示:
值类型传递:
<script type="text/javascript"> var num1=666; var num2=num1; console.log(num1);//666 console.log(num2);//666 num1=999; console.log(num1);//999 console.log(num2);//666 </script>
引用类型传递:
<script type="text/javascript"> var obj1={}; obj1.num=666; var obj2=obj1; console.log(obj1.num);//666 console.log(obj2.num);//666 obj2.num=999; console.log(obj1.num);//999 console.log(obj2.num);//999 </script>
总结一下:值类型传递参数时不同的变量占用的栈空间不同,但栈空间内的数据相同;引用类型传递参数时不同的变量占用的栈空间不同,但是栈空间指向的堆空间是同一个。即,值类型传参:你变我不变;引用类型传参:大家一起变。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 论js函数传参时值传递和引用传递的区别
- JS函数传参时:值传递与引用传递的区别
- js传参值传递与引用传递的区别
- Java方法传参的值传递和引用传递的区别(code)
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- java中传参问题的分析,基本数据类型和引用类型传参的区别,String类型传参是值传递还是引用传递?
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- JS引用传递与值传递的区别与用法分析
- js 中参数传递(值传递和引用传递)
- php 数组 类对象 值传递 引用传递 区别
- Java中按值传递和按引用传递的区别
- js数组引用传递
- js基本数据类型和引用数据类型的区别
- C++:指针传递、引用传递的区别
- 值传递,指针传递,引用传递 的区别
- js中函数传递参数,究竟是值传递还是引用传递?
- JS与PHP向函数传递可变参数的区别实例代码
- Java的值传递和引用值传递的区别
- C++中引用传递与指针传递区别