浅谈JavaScript函数参数的可修改性问题
时间:2024-05-02 17:20:29
一道笔试题思考而来的,通常情况下没人会在函数内部修改参数值。这里仅拿出来讨论,有三种方式可以修改。
1,直接修改函数声明时的形参
function f1(a) {
alert(a);
a = 1;//修改形参a
alert(1 === a);
alert(1 === arguments[0]);
}
f1(10);
函数f1定义了参数a,调用时传参数10,先弹出10,修改a为1,弹出两次true,a和arguments[0]都为1了。
2,通过函数内部的arguments对象修改
function f2(a) {
alert(a);
arguments[0] = 1;//修改arguments
alert(1 === a);
alert(1 === arguments[0]);
}
效果同函数f1。
3,函数内部声明的局部变量与形参同名
function f3(a) {
alert(a);
var a = 1;//声明局部变量a且赋值为1
alert(1 === a);
alert(arguments[0]);
}
f3(10);
函数f3定义了形参a,函数内部声明局部变量a同时赋值为1,但这里的a仍然是参数a,从最后弹出的arguments[0]被修改为1可以证明。
4,如果只是声明局部变量a,却不赋值,情况又不一样了
function f3(a) {
var a;//仅声明,不赋值
alert(a);
alert(arguments[0]);
}
f3(10);
这时候弹出的都是10,而不是undefined。
标签:JavaScript,函数参数
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Vue.js原理分析之nextTick实现详解
2024-05-13 09:38:08
如何使用AspUpload2.0组件?
2010-06-05 12:33:00
一文看懂JSONP原理和应用
2024-04-23 09:10:47
![](https://img.aspxhome.com/file/2023/1/135681_0s.png)
使用Python的Flask框架来搭建第一个Web应用程序
2022-12-11 21:46:10
![](https://img.aspxhome.com/file/2023/6/94126_0s.png)
python爬虫scrapy框架的梨视频案例解析
2023-01-16 08:22:19
![](https://img.aspxhome.com/file/2023/8/127838_0s.jpg)
安装MSSql2005时 “以前的某个程序安装已在安装计算机上创建挂起” 的解决办法
2024-01-22 08:49:39
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2023-12-08 18:55:11
![](https://img.aspxhome.com/file/2023/6/107596_0s.png)
golang coroutine 的等待与死锁用法
2024-04-30 10:03:34
Python使用xlrd模块操作Excel数据导入的方法
2022-05-03 19:28:24
PHP中生成UUID自定义函数分享
2023-11-14 16:57:04
MySQL中的日期时间类型与格式化方式
2024-01-22 00:10:23
![](https://img.aspxhome.com/file/2023/2/82242_0s.png)
Python中url标签使用知识点总结
2022-05-12 11:13:09
![](https://img.aspxhome.com/file/2023/5/79465_0s.png)
jupyter notebook快速入门及使用详解
2023-07-17 07:48:57
![](https://img.aspxhome.com/file/2023/4/120584_0s.png)
吴恩达机器学习练习:神经网络(反向传播)
2021-12-13 05:13:25
![](https://img.aspxhome.com/file/2023/6/80656_0s.png)
Python漏洞验证程序Poc利用入门到实战编写
2022-05-08 00:00:31
![](https://img.aspxhome.com/file/2023/3/110073_0s.jpg)
python namedtuple函数的使用
2021-09-27 08:18:30
超详细的Python安装第三方库常用方法汇总
2023-08-26 08:54:47
![](https://img.aspxhome.com/file/2023/7/91917_0s.png)
Python Pandas 修改表格数据类型 DataFrame 列的顺序案例
2023-02-27 17:47:37
Windows 下 MySQL 8.X 的安装教程
2024-01-14 03:05:33
![](https://img.aspxhome.com/file/2023/6/118456_0s.png)
解决Vue watch里调用方法的坑
2024-05-05 09:10:44