`
zhouyrt
  • 浏览: 1158966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js函数参数的可修改性

 
阅读更多

 

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

 

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可以证明。

 

如果只是声明局部变量a,却不赋值,情况又不一样了

 

function f3(a) {
	var a;//仅声明,不赋值
	alert(a);
	alert(arguments[0]);
}
f3(10);
 

这时候弹出的都是10,而不是undefined。

 

 

 

 

分享到:
评论
3 楼 yining159 2010-06-28  
switch(typeof(arg))
根据参数类型不同做不同的操作
至于转换 貌似没有必要
2 楼 chemzqm 2010-06-27  
最佳实践就是永远不要去修改传入参数,那样不仅程序难读,而且容易引发难以查找的bug
1 楼 ccyingfu 2010-06-26  
不错,让我了解了不同层面的东西。但我不觉得这样做有意义,如果要是给参数付值,那么我们传进去的参数又有什么意义呢?

相关推荐

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

    总结起来,JavaScript函数参数的可修改性主要涉及以下几点: 1. 形参在函数内部是可以被重新赋值的,但这不影响调用时实际传入的值。 2. `arguments`对象提供了访问所有参数的途径,即使参数已经被修改。 3. 在函数...

    JS 函数式编程指南 PDF

    总结而言,JS函数式编程指南为读者提供了一种途径,借助于JavaScript这种广泛使用的编程语言,去理解和掌握函数式编程的核心概念和实践技巧。这本指南不仅涵盖了函数式编程的基础理论,还详细介绍了如何在实际开发中...

    JavaScript函数式编程.pdf

    不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...

    javascript函数式编程

    JavaScript函数式编程是一种编程范式,它强调将计算视为数据处理的过程,并且重视函数作为第一类公民,即函数可以作为变量赋值、作为参数传递、作为返回值返回。这种编程风格在JavaScript中尤其常见,因为它提供了...

    javaScript函数式编程

    全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多...

    Finereport数据集参数实现动态列报表模板 + 函数JS代码

    在这个“Finereport数据集参数实现动态列报表模板 + 函数JS代码”的资源包中,我们将深入探讨如何利用FineReport的特性来实现动态列报表,并结合JavaScript(JS)代码来优化这一过程。 首先,动态列报表的核心在于...

    JS函数参数的传递与同名参数实例分析

    本文将深入分析JavaScript函数参数传递的原理,探讨同名参数在函数中的表现,并通过实例分析来帮助大家更好地理解和应用这些概念。 首先,我们需要明确JavaScript中参数传递的两种基本类型:值传递和引用传递。当...

    JavaScript函数式编程pdf

    通过阅读《JavaScript函数式编程》这本书,读者可以学习如何在实际项目中应用这些概念,提升代码质量,减少出错的可能性,并提高代码的可维护性。无论你是初学者还是经验丰富的开发者,这本书都值得一看,它能帮助你...

    09-函数参数.md

    在分析“09-函数参数.md”这一文件中,我们可以提炼出多个与函数参数相关的知识点,这些知识点包括但不限于函数参数的传递方式、参数在函数中的使用、以及代码规范在函数参数使用中的作用。以下是对这些知识点的详细...

    JavaScript 函数式编程 (英文版)

    在JavaScript中,我们可以通过使用`Object.freeze()`冻结对象,或者使用Immutable.js库来实现数据不可变性,这有助于减少副作用并提高代码可预测性。 9. **函数式编程库**:在JavaScript中,有很多库如Ramda、...

    函数做参数Pro

    函数做参数是这一思想的重要体现,它允许我们传递行为而不是数据,从而提高了代码的灵活性。 2. **高阶函数** 高阶函数是指可以接受一个或多个函数作为输入,并可能返回一个新的函数的函数。这些函数通常用作工具...

    深入理解JavaScript函数参数(推荐)

    JavaScript函数参数的理解是每个JavaScript开发者必须掌握的基础知识。在JavaScript中,函数参数具有以下几个关键特点: 1. **无类型检查**:JavaScript函数不关心传递的参数类型,这意味着你可以将任何类型的值...

    浅谈JavaScript 函数参数传递到底是值传递还是引用传递

    JavaScript中的函数参数传递机制一直以来都是开发者讨论的热点。在传统观念中,JavaScript的参数传递常被误解为引用传递,即类似C++或C中的指针传递。然而,JavaScript的实现其实更为复杂,它包含了值传递和引用传递...

    详解javascript函数的参数

    通过以上分析,我们了解到JavaScript函数参数的灵活性,它们既可以是任意类型,数量也无需固定。函数的参数机制允许开发者以多种方式传递数据给函数,提供了调用函数时的灵活性和代码的复用性。同时,需要对传值和...

    js函数形参形参接收object变量.docx

    JavaScript函数参数接收Object变量是一个常见的编程操作,尤其是在处理复杂数据结构时。JavaScript是一种动态类型的语言,这意味着你可以在函数参数中传递任何类型的值,包括对象。以下是对这一主题的详细讲解: 1....

    JS调用后台带参数的方法

    - **异步请求**:更推荐使用AJAX等方式进行前后端通信,这样可以更好地分离关注点,提高系统的可维护性和扩展性。 ### 总结 通过上述分析,我们了解了JS调用后台带参数的基本原理和实现方法。需要注意的是,在实际...

    JavaScript函数式编程

    通过学习和实践这些JavaScript函数式编程的概念,开发者可以编写出更加优雅、高效和易于维护的代码,同时降低bug出现的可能性。本电子教程将详细解释每一个概念,并提供丰富的示例和练习,帮助读者掌握JavaScript...

    JavaScript的函数式编程基础指南

    但通过使用不可变数据结构(如Immutable.js库提供的数据结构)和函数式编程库(如Ramda或Lodash),开发者可以在JavaScript中实现更接近函数式风格的编程。 总的来说,JavaScript的函数式编程是利用语言固有的函数...

Global site tag (gtag.js) - Google Analytics