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

本文共 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

你可能感兴趣的文章
python核心编程——python对象
查看>>
我第一家互联网公司产品开发周期
查看>>
指数函数及其性质教学设计
查看>>
关于内存中栈和堆的区别(非数据结构中的堆和栈,区别)【转】
查看>>
嵌套查询
查看>>
HTML5即将迎来黄金时代 轻应用再成行业焦点
查看>>
python-Levenshtein几个计算字串相似度的函数解析
查看>>
shipyard, swarm看到你,我才睡觉:)
查看>>
hdu 4409 Family Name List(LCA&有坑点)
查看>>
Linux内核之于红黑树and AVL树
查看>>
牛腩新闻系统(一)——UML、数据库设计
查看>>
使用JSONObject 深度序列化和反序列化
查看>>
ios Button
查看>>
【JMeter连接SQLServer】採用window鉴权方式连接(原创)
查看>>
es65 跨模块常量
查看>>
JSP处理XML数据
查看>>
奇妙的 CSS shapes(CSS图形) 【css 图形,绘图,CSS 几何图形)】
查看>>
JavaScript利用Date实现简单的倒计时实例
查看>>
静态代理模式
查看>>
NuGet包断线续传下载
查看>>