你所不知道的js语言细节---1、函数的形参赋值
函数形参赋值问题
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、函数的形参赋值相关推荐
- 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节
本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指 ...
- python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路
原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...
- Android Context完全解析,你所不知道的Context的各种细节
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47028975 前几篇文章,我也是费劲心思写了一个ListView系列的三部曲,虽然 ...
- 高手才知道!七个你所不知道的 D3.js 秘技
D3.js ,当前最火红的视觉化套件,你用过了吗?越来越多人使用 D3.js 来开发视觉化专题,但- 你对 D3.js 的了解又到哪里呢?这次我们就带大家一起来看看一些 D3.js 很重要.大家却又普 ...
- 你所不知道的console.log()(console.log详解)
console.log,作为一个前端开发者,想必每天都会用它来做分析调试,但这个简单函数背后你所不知道的一面,很多人未必使用过,有一些也是很方便使用的 基础 首先,简单科普这个函数的作用.前端开发者可 ...
- 一些你所不知道的VS Code插件
摘要: 你所不知道的系列. 原文:提高 JavaScript 开发效率的高级 VSCode 扩展之二! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 作为一名业余爱好者.专业人员,甚 ...
- 你所不知道的setTimeout
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...
- 你所不知道的C和C++运行库
你所不知道的C和C++运行库 周五晚,小雨,少见的未加班.无聊,遂准备写一篇博客,介绍一下C和C++运行库,只因发现工作几年的人对此一知半解的大有人在. 在使用VC构建项目时,经常会遇到下面的链接错误 ...
- 你真的会玩SQL吗?你所不知道的 数据聚合
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
最新文章
- 好消息:Sci-Hub解封了!可以看2021新文献了!附可用网址
- JavaAgent 简单例子
- mybatis 原理_图解源码 | MyBatis的Mapper原理
- 大剑无锋之SQL求用户最近的登录时间【面试推荐】
- 爬虫 spider01——基本概念
- php怎么连接数据库6,PHP连接数据库的步骤
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
- HTML的快速写法:Emmet和Haml
- Android系统开机优化
- java进出口食品安全信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- QLabel(一) 内容换行
- java 支付宝转账_支付宝单笔转账到支付宝账户 Java
- 我们把计算机硬件系统和软件系统称为,中国大学MOOC:\我们把计算机硬件系统和软件系统总称为( )。\;...
- 开源高手推荐 十大最流行开源软件
- 反病毒技术——UTM
- 计算机报刊杂志推荐,计算机优秀期刊推荐 | Journal of Cloud Computing
- Variable conv1/weights already exists, disallowed. Did you mean to set reuse=True...tensorflow报错
- Android12 支持高斯模糊及高斯模糊原理
- JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现
- 计算机一级2021excel,2021年计算机一级EXCEL操作题-20210514115911.doc-原创力文档
热门文章
- 添加 中科大linux源,CentOS配置网易163 中科大 yum源
- JAVA 微信 rfc3339标准格式的时间转换
- 图片转Svg格式以及压缩优化方法
- 送给女朋友的心形照片墙
- 嵌入式linux系统ppt,嵌入式linux系统设计.ppt
- [Camera Drv]如何调整闪光灯在auto模式下的打闪阈值
- 推导B树的最大高度和最小高度得出B树的高度范围
- unity中[SerializeField]特性以及Inspectors中变量的操作
- 视频教程-MiniUI 实战演练视频教程-其他
- js获取汉字的拼音首字母