浅谈JavaScript函数参数的可修改性问题


Posted in Javascript onDecember 05, 2013

一道笔试题思考而来的,通常情况下没人会在函数内部修改参数值。这里仅拿出来讨论,有三种方式可以修改。

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 相关文章推荐
JavaScript中也使用$美元符号来代替document.getElementById
Jun 19 Javascript
JavaScript伸缩的菜单简单示例
Dec 03 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
JavaScript错误处理
Feb 03 Javascript
jQuery实现平滑滚动到指定锚点的方法
Mar 20 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
javascript实现右下角广告框效果
Feb 01 Javascript
微信小程序左右滑动切换页面详解及实例代码
Feb 28 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
JS实现的简单折叠展开动画效果示例
Apr 28 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
浅析JavaScript中的隐式类型转换
Dec 05 #Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 #Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 #Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 #Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 #Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 #Javascript
给事件响应函数传参数的四种方式小结
Dec 05 #Javascript
You might like
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
RC4文件加密的python实现方法
2015/06/30 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
python 计算文件的md5值实例
2017/01/13 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
详解anaconda安装步骤
2020/11/23 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
新闻学专业个人求职信写作
2014/02/04 职场文书
求职毕业生自荐书
2014/02/08 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
企业文化演讲稿
2014/05/20 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
主持稿开场白
2015/06/01 职场文书
铁人观后感
2015/06/16 职场文书
python如何将mat文件转为png
2022/07/15 Python