JS函数传参是传值还是传引用
来源:互联网 发布:一个简单的c语言程序 编辑:程序博客网 时间:2024/06/17 21:34
基本数值类型不用说,传值;
引用类型:严格来说不能算传引用,在js中叫按共享传递 call by sharing也叫按对象传递、按对象共享传递。最早由Barbara Liskov. 在1974年的GLU语言中提出。该求值策略被用于Python、Java、Ruby、JS等多种语言。
该策略的重点是:调用函数传参时,函数接受对象实参引用的副本(既不是按值传递的对象副本,也不是按引用传递的隐式引用)。
它和按引用传递的不同在于:在共享传递中对函数形参的赋值,不会影响实参的值。如下面例子中,不可以通过修改形参o的值,来修改obj的值。
代码如下:
var obj = {x : 1};
function foo(o) {
o = 100;
}
foo(obj);
console.log(obj.x); // 仍然是1, obj并未被修改为100.
然而,虽然引用是副本,引用的对象是相同的。它们共享相同的对象,所以修改形参对象的属性值,也会影响到实参的属性值。
var obj = {x : 1};
function foo(o) {
o.x = 3;
}
foo(obj);
console.log(obj.x); // 3, 被修改了!
总之:
js中的引用类型“”传引用“”实际是传共享,
即:地址的副本,所以在函数里面对地质的修改不会影响到外面,因为是地址的副本!
但是,又因为地址指向的是同一个内容,所以对“内容”即对象属性的修改会影响到外面。
0 0
- JS函数传参是传值还是传引用
- 关于Js中函数传参是引用还是传值
- python 函数传参是传值还是传引用
- python函数传参是传值还是传引用?
- python函数传参是传值还是传引用?
- python函数传参是传值还是传引用?
- Python函数调用“传引用”还是”传值“
- Python的函数参数传递:传值还是传引用
- java函数传值还是传引用的问题
- Python函数参数传递:传值还是传引用
- Python函数参数传递:传值还是传引用
- python 函数参数传值还是传引用
- Java的函数到底是传值?传引用?还是……
- javascript - 函数里传的是值还是引用
- python中函数参数是引用还是传值
- Python 函数中,参数是传值,还是传引用?
- [AHK]函数的参数是传值,还是传引用?
- Python 函数中,参数是传值,还是传引用?
- win下使用thrift生成gen-php文件代码
- linux下编译整个Android源码树
- ubuntu服务器中repo的安装使用
- 欢迎使用CSDN-markdown编辑器
- oracle 中删除表 drop delete truncate
- JS函数传参是传值还是传引用
- View Controller 的父子关系处理(Custom Container View Controller)
- Postgis常用函数
- 22. Generate Parentheses
- m,mm,mmm区别
- java 压缩单个文件,多个文件,或者压缩文件夹
- JavaMail API概述及JAF简介
- AIX系统下如何启动和停止ftp服务
- 实现oracle的rownum