函数形参赋值问题

ECMAscript中的所有函数都是按值传递的,也就是说,把函数外部的值复制给函数内部的参数。,就和把一个变量复制到另一个变量一样

基本类型

function addTime(num){num++;return num;
}
let count = 10;
let result = addTime(count);
console.log(result); // 11
console.log(num); // 10

基本类型的形参赋值。参数num是函数中的局部变量,函数调用中变量count作为参数被传递给这个函数,count的值10也被复制给局部变量num以便在函数addTime中使用。函数执行中,num的值++,这一变化并不会影响外部变量count变量。参数num和count相互之间并不认识他们只是具备相同的值。

引用类型

let obj = {name:'renlingxin'};
function addClass(item){item.name = 'tepulang';return item;
}
addClass(obj);
console.log(obj.name);  //'tepulang'

引用类型的形参赋值。变量obj作为参数传递给函数addClass,在形参赋值过程中,obj的内容被复制给item,但同时他们访问的还是同一个内存地址。与基本类型的不同之处在于,引用类型的按值传递就是将引用地址复制给形参item,因此item.name会影响外部变量obj的值;

let bom = {age:32};
function delet(item){item.age = 33;item = new Object();item.age = 0;
}
delet(bom);
console.log(bom.age); //33

这段代码与前一个例子的区别就在于,在对item进行形参赋值之后,并进行了响应的操作之后。又赋给item新的内存地址;然而外部变量bom并没有受到函数内新内存地址操作的影响;我们可以得出结论,在形参赋值之后item所访问的内存地址就被凝固了。更一步验证了函数的参数是按值操作。

你所不知道的js语言细节---1、函数的形参赋值相关推荐

  1. 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节

    本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指 ...

  2. python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路

    原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...

  3. Android Context完全解析,你所不知道的Context的各种细节

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47028975 前几篇文章,我也是费劲心思写了一个ListView系列的三部曲,虽然 ...

  4. 高手才知道!七个你所不知道的 D3.js 秘技

    D3.js ,当前最火红的视觉化套件,你用过了吗?越来越多人使用 D3.js 来开发视觉化专题,但- 你对 D3.js 的了解又到哪里呢?这次我们就带大家一起来看看一些 D3.js 很重要.大家却又普 ...

  5. 你所不知道的console.log()(console.log详解)

    console.log,作为一个前端开发者,想必每天都会用它来做分析调试,但这个简单函数背后你所不知道的一面,很多人未必使用过,有一些也是很方便使用的 基础 首先,简单科普这个函数的作用.前端开发者可 ...

  6. 一些你所不知道的VS Code插件

    摘要: 你所不知道的系列. 原文:提高 JavaScript 开发效率的高级 VSCode 扩展之二! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 作为一名业余爱好者.专业人员,甚 ...

  7. 你所不知道的setTimeout

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  8. 你所不知道的C和C++运行库

    你所不知道的C和C++运行库 周五晚,小雨,少见的未加班.无聊,遂准备写一篇博客,介绍一下C和C++运行库,只因发现工作几年的人对此一知半解的大有人在. 在使用VC构建项目时,经常会遇到下面的链接错误 ...

  9. 你真的会玩SQL吗?你所不知道的 数据聚合

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

最新文章

  1. 好消息:Sci-Hub解封了!可以看2021新文献了!附可用网址
  2. JavaAgent 简单例子
  3. mybatis 原理_图解源码 | MyBatis的Mapper原理
  4. 大剑无锋之SQL求用户最近的登录时间【面试推荐】
  5. 爬虫 spider01——基本概念
  6. php怎么连接数据库6,PHP连接数据库的步骤
  7. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
  8. HTML的快速写法:Emmet和Haml
  9. Android系统开机优化
  10. java进出口食品安全信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  11. QLabel(一) 内容换行
  12. java 支付宝转账_支付宝单笔转账到支付宝账户 Java
  13. 我们把计算机硬件系统和软件系统称为,中国大学MOOC:\我们把计算机硬件系统和软件系统总称为( )。\;...
  14. 开源高手推荐 十大最流行开源软件
  15. 反病毒技术——UTM
  16. 计算机报刊杂志推荐,计算机优秀期刊推荐 | Journal of Cloud Computing
  17. Variable conv1/weights already exists, disallowed. Did you mean to set reuse=True...tensorflow报错
  18. Android12 支持高斯模糊及高斯模糊原理
  19. JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现
  20. 计算机一级2021excel,2021年计算机一级EXCEL操作题-20210514115911.doc-原创力文档

热门文章

  1. 添加 中科大linux源,CentOS配置网易163 中科大 yum源
  2. JAVA 微信 rfc3339标准格式的时间转换
  3. 图片转Svg格式以及压缩优化方法
  4. 送给女朋友的心形照片墙
  5. 嵌入式linux系统ppt,嵌入式linux系统设计.ppt
  6. [Camera Drv]如何调整闪光灯在auto模式下的打闪阈值
  7. 推导B树的最大高度和最小高度得出B树的高度范围
  8. unity中[SerializeField]特性以及Inspectors中变量的操作
  9. 视频教程-MiniUI 实战演练视频教程-其他
  10. js获取汉字的拼音首字母