传值和传址
来源:互联网 发布:js中鼠标点击事件 编辑:程序博客网 时间:2024/05/22 06:46
对操作数据的传值和传址讨论是具有一般意义的,而二者的区别适用于所有的编程语言。
一:传值
1.复制:实际复制的是值,存在两个不同的,独立的拷贝 。
2.传递:传递给函数的是值的一个独立的拷贝,对它的改变在函数外部没有影响。
3.比较:比较的是两个独立的值(通常逐字节比较),以判断他们是否相等。
二:传址
1.复制:复制的只是对数值的引用。如果通过这个新的引用修改了数值,这个改变对最初的引用来说也可见。
2.传递:传递给函数的是对数值的一个引用。如果函数通过传递给它的应用修改了数值,这个改变在函数外部也可见。
3.比较:比较的是两个引用,以判断它们引用的是否是同一个数值。对两个不同的数值的引用不相等,即使这两个数值是由相同的子节构成的。
JavaScript的基本规则是:基本数据类型通过传值来操作,而引用类型,从其名字可以看出,通过传址来操作。数字和布尔类型在JavaScript中都是基本类型。因为他们只是有一些很小的、固定数目的字节组成,这些字节很容易在JavaScript解释器的较低层操作。另一方面,对象是引用类型,数组和函数,是对象的特殊类型,也是引用类型。这些数据类型可以包含任意数目的属性和元素,因此他们无法向固定大小的基本类型值那样很容易的操作。既然对象和数值的值可能会变得很大,那么通过传址来操作这些类型也就没有什么意义,因为这样可能会牵涉到对大量内存低效率的复制和比较。
在C++和Java中,字符串是引用类型,是通过传址来比较的。JavaScript是一种高级语言,并且认为比较字符串的时候,通过传值来比较它们。
总结:
类型 复制 传递 比较
数字 传值 传值 传值
布尔 传值 传值 传值
字符串 不可变 不可变 传值
对象 传值 传值 传值
- 传值和传址
- 传值和传址
- 传值和传址
- 传值和传址
- 传值和传址
- 传值和传址
- 传值和传址
- js- 引用和复制(传值和传址)
- js- 引用和复制(传值和传址)
- js- 引用和复制(传值和传址)
- js- 引用和复制(传值和传址)
- 再论传值和传址
- 深入讨论传值和传址
- 深入讨论传值和传址
- java传值和传址
- 传值和传址的区别
- 传值和传址易错点
- Python的传值和传址与copy和deepcopy
- 18 个特别有用的 Photoshop 快捷键
- 一个简单的软实时操作系统
- 我的十年梦想
- 扩展拦截器
- 批处理命令批量重签名AndroidAPK包 && JAR转APK网址
- 传值和传址
- 逃课引发的感想......
- 设置MFC中EditBox为自动换行
- 新手上路啊
- 如何在Eclipse中用JDBC连接Sql Server 2005,曾经让我如此的蛋疼(下篇)
- 与类相关的一些指针
- 站点发布的经验总结
- "Reporting Services Catalog Database File Existence" error during installing SQL Server 2008 R2
- spring 监听器 IntrospectorCleanupListener简介