博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习JS的心路历程-参数传递方式(上)
阅读量:5892 次
发布时间:2019-06-19

本文共 818 字,大约阅读时间需要 2 分钟。

很多人认为JS的传递方式是值是Call by value,

物件及数组是Call by Reference。甚至还有人宣称其实JS是Call by sharing,那到底是哪一个呢?

 

这两天我们一一来分析这三种参数传递方式:

 

我们都以这个例子作为图解分析:

 

var x =“Hola”;

var y = x;

Call by value

会直接把值拷贝过去

 

首先会先执行var x =“Hola”,声明一个变量x并初始化其值为“Hola”:

 

再来执行var y = x,声明一个变量y初始化其值为复制x的值,也就是“Hola”:

 

这就是Call by value的原理,很简单对吧?

 

Call by reference

当第一个变量存在一个值,而另一个变量要取其值时候,只会拿到对方的內存位置。

 

var x =“Hola”:

 

var y = x,声明变量y并初始化其值为x內存位置:

 

所以我们如果修改y的值,会经由0x11找到x的值并修改。

 

Call by sharing

跟call by reference非常类似,只是存放值的空间是独立的,任何变量的值都只能拥有其內存位置。

 

var x =“Hola”,声明变量x并初始化其值为Hola內存位置。

 

var y = x,声明变量y并初始化其值为Hola內存位置。

 

这个有点像C++中指标的概念,变量只能存放只读的內存位置,要修改必须透过內存位置找到值Hola并修改其值。

 

今天我们说了三种参数的传递方式,明天我们会来实作JS程序,来探讨到底JS是使用哪种参数传递。

 

以上信息若有错误欢迎留言校正!

 

参考:

深入探讨JavaScript中的参数传递:call by value还是reference?

JavaScript -参数传递方式(1)

C语言:超好懂的指标,初学者请进~

转载于:https://www.cnblogs.com/lannyQ-Q/p/9907773.html

你可能感兴趣的文章
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
Windows下memcached的安装配置
查看>>
ubuntu: firefox+flashplay
查看>>
常见的海量数据处理方法
查看>>
Microsoft Windows 8.1 使用记录
查看>>
C语言博客作业03--函数
查看>>
web.xml 中CharacterEncodingFilter类的学习
查看>>
显示刚刚添加的最后一条数据,access,选择语句,select
查看>>
贪吃蛇逻辑代码
查看>>
实现c协程
查看>>
ASP.NET视频教程 手把手教你做企业论坛网站 视频教程
查看>>
[LeetCode] Meeting Rooms II
查看>>
从Swift学习iOS开发的路线指引
查看>>
3.1链表----链表(Linked List)入门
查看>>
[布局] bootstrap基本标签总结
查看>>
异步编程思想
查看>>
"数学口袋精灵"bug(团队)
查看>>
2017python第六天作业 面向对象 本节作业: 选课系统
查看>>
【找规律】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1...
查看>>
Scribes:小型文本编辑器,支持远程编辑
查看>>