JS基本数据类型和引用类型的参数传递详细分析
来源:互联网 发布:windows hello 编辑:程序博客网 时间:2024/06/08 06:55
1、基本数据类型传递参数:
funciton addTen(num){ num+=10; return num; } var count=20; var result=addTen(count); alert(count);//20 alert(resullt);//30
执行结果是:20和30。在这段代码中,将变量count当做参数传递给了函数addTen,也就是相当于将变量count的值复制给了函数addTen的参数。这时addTen的参数num可以看做是函数内部的一个变量。在上段代码中,就相当于两个基本数据类型变量之间的值复制。而基本数据类型都有自己独立的内存地址,所以num和count是没有任何关系的,他们只是值相等而已,函数执行完毕后,count的值并没有改变。而函数外面的result是被直接赋值的,所以result的值就是函数的结果30。
2、引用类型传递参数:
function setName(obj){ obj.name="LSN"; } var person=new Object(); setName(person); alert(person.name);//LSN
执行结果是:LSN。在这段代码中,函数setName的作用是给obj对象添加了一个属性name并给该属性赋值为"LSN",因为obj是引用类型,所以这里属于是将引用类型person赋值给了obj,也就是说person和obj引用了一个内存地址,所以当给obj新加了属性name时,在函数外面的person也跟着改变,最后person.naem的结果为LSN。
3、引用类型传递参数到底传的是值还是引用?
function setName(obj){ obj.name="ABC"; obj=new Object(); obj.name="BCD"; } var person=new Object(); setName(person); alert(person.name);// ABC
执行结果是:ABC。实例3与实例2的区别是在函数中又加了2行代码,在给obj对象新加一个属性name并赋值后 又将obj定义成了一个新的对象(new Object()),定义新对象后又name赋上新的值“BCD”。这个时候如果是按引用传递的话,那么最后person对象就会自动修改为指向其name属性为"BCD"的新对象,但最后显示的却是“ABC”,这说明即使在函数内部修改了参数的值,但原始的引用还保持不变。实际上,当在函数内部obj=new Object()时 这个新的obj就已经成为函数内部的局部对象了,这个对象会在函数执行完毕后自动销毁。
两种变量类型检测
1.
2.
3.
4.
- JS基本数据类型和引用类型的参数传递详细分析
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- js 基本类型和引用类型 变量复制 参数传递
- 基本数据类型和引用数据类型参数的传递
- 基本数据类型和引用数据类型的参数传递
- Java中的原生数据类型和引用类型的参数传递
- Java中的原生数据类型和引用类型的参数传递
- 基本类型/引用类型的参数传递
- 基本数据类型和引用数据类型的传递
- 基本数据类型和引用数据类型的传递
- java中基本类型的参数传递和引用类型的参数传递
- js 函数传递参数类型问题(基本类型和引用类型)
- 基本、数组、引用类型的参数传递
- 基本数据类型和引用数据类型参数传递图解
- 基本数据类型和引用数据类型当做参数传递
- java基础之----基本数据类型和引用数据类型的参数传递过程(一)
- Java传参-基本数据类型和引用数据类型作为参数的区别(值传递)
- tcpdump、nc
- windows 下boost库的简单编译
- unity载入外部视频脚本
- HDU 4768 Flyer
- linuxs 下的yii入门笔记(一)
- JS基本数据类型和引用类型的参数传递详细分析
- Serializable 和 Parcelable 区别
- 基本数值计算秦九韶算法
- unity动态加载远程资源
- Rails实现一个blog项目02-登录功能和session的实现
- API汇总 - JAVA
- github上readme.md格式
- 杂七杂八2
- kernel------理解inode