浅谈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 相关文章推荐
QQ登录简单实现代码
Mar 09 Javascript
谷歌浏览器 insertCell与appendChild的区别
Feb 12 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
Jan 07 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
用js替换除数字与逗号以外的所有字符的代码
Jun 07 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
理解javascript中Map代替循环
Feb 26 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
vue-music关于Player播放器组件详解
Nov 28 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
浅析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与已存在的Java应用程序集成
2006/10/09 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
javascript中this关键字详解
2016/12/12 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
React注册倒计时功能的实现
2018/09/06 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
python实现360皮肤按钮控件示例
2014/02/21 Python
Python下singleton模式的实现方法
2014/07/16 Python
python中__call__内置函数用法实例
2015/06/04 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python实现视频压缩功能
2020/12/18 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
创意活动策划书
2014/01/15 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
信用卡工资证明范本
2014/10/17 职场文书
党员公开承诺书2015
2015/01/21 职场文书
武夷山导游词
2015/02/03 职场文书
python实现会员管理系统
2022/03/18 Python