加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

JavaScript是如何工作的:JavaScript的共享传递和按值传递

发布时间:2019-04-19 18:03:26 所属栏目:优化 来源:前端小智
导读:副标题#e# 关于JavaScript如何将值传递给函数,在互联网上有很多误解和争论。大致认为,参数为原始数据类时使用按值传递,参数为数组、对象和函数等数据类型使用引用传递。 按值传递 和 引用传递参数 主要区别简单可以说: 按值传递:在函数里面改变传递的

具体来说,当你传递一个对象(或数组)时,你无形地传递对该对象的引用,并且可以修改该对象的内容,但是如果你尝试覆盖该引用,它将不会影响该对象的副本- 即引用本身按值传递:

  1. function replace(ref) {  
  2. ref = {}; // 这段代码不影响传递的对象  
  3. }  
  4. function update(ref) {  
  5. ref.key = 'newvalue'; // 这段代码确实会影响对象的内容  
  6. }  
  7. var a = { key: 'value' };  
  8. replace(a); // a 仍然有其原始值,它没有被修改的  
  9. update(a); // a 的内容被更改  

从我们在汇编代码和内存模型中看到的。这个答案百分之百正确。在 replace 函数内部,它在堆中创建一个新对象,并将其分配给 ref 参数,a 对象内存地址被重写。

update 函数引用 ref 参数中的内存地址,并更改存储在存储器地址中的对象的key属性。

总结

根据我们上面看到的,我们可以说原始数据类型和引用数据类型的副本作为参数传递给函数。不同之处在于,在原始数据类型,它们只被它们的实际值引用。JS 不允许我们获取他们的内存地址,不像在C与C++程序设计学习与实验系统,引用数据类型指的是它们的内存地址。

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!