浅谈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,函数参数
0
投稿

猜你喜欢

  • Vue.js原理分析之nextTick实现详解

    2024-05-13 09:38:08
  • 如何使用AspUpload2.0组件?

    2010-06-05 12:33:00
  • 一文看懂JSONP原理和应用

    2024-04-23 09:10:47
  • 使用Python的Flask框架来搭建第一个Web应用程序

    2022-12-11 21:46:10
  • python爬虫scrapy框架的梨视频案例解析

    2023-01-16 08:22:19
  • 安装MSSql2005时 “以前的某个程序安装已在安装计算机上创建挂起” 的解决办法

    2024-01-22 08:49:39
  • Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)

    2023-12-08 18:55:11
  • 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
  • Python中url标签使用知识点总结

    2022-05-12 11:13:09
  • jupyter notebook快速入门及使用详解

    2023-07-17 07:48:57
  • 吴恩达机器学习练习:神经网络(反向传播)

    2021-12-13 05:13:25
  • Python漏洞验证程序Poc利用入门到实战编写

    2022-05-08 00:00:31
  • python namedtuple函数的使用

    2021-09-27 08:18:30
  • 超详细的Python安装第三方库常用方法汇总

    2023-08-26 08:54:47
  • Python Pandas 修改表格数据类型 DataFrame 列的顺序案例

    2023-02-27 17:47:37
  • Windows 下 MySQL 8.X 的安装教程

    2024-01-14 03:05:33
  • 解决Vue watch里调用方法的坑

    2024-05-05 09:10:44
  • asp之家 网络编程 m.aspxhome.com