arguments 对象
在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。
例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。
因此,无需明确命名参数,就可以重写函数:
function sayHi() {
if (arguments[0]
== "bye") {
return;
}
alert(arguments[0]);
}
检测参数个数
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
下面的代码将输出每次调用函数使用的参数个数:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
上面这段代码将依次显示 "2"、"0" 和 "1"。
注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。
模拟函数重载
用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); //输出 "15" doAdd(40, 20); //输出 "60"
当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。
虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。
相关推荐
在早期的ECMAScript规范中,arguments对象还有两个属性:arguments.callee和arguments.caller。这两个属性分别指代当前正在执行的函数本身和调用当前函数的函数。然而,出于安全性和性能优化的考虑,这些属性已经在...
虽然arguments对象包含了传递给函数的所有参数,但它并不是一个真正的数组,这在使用时需要特别注意。 首先,我们来探讨arguments对象是什么。它提供了一种方式来访问函数调用时传递给函数的所有参数。这是...
JavaScript中的arguments对象是函数内预定义的一个类数组对象,它包含了传递给函数的所有参数值。尽管在现代JavaScript开发中,ES6引入了更灵活的参数处理方式,如rest参数和默认参数,但在学习和理解JavaScript时,...
### JavaScript中的`arguments`对象详解 在JavaScript编程中,`arguments`对象是一个非常有用的特性,尤其是在处理函数调用时不确定参数数量的情况下。虽然它不是ECMAScript标准的一部分,但所有主流浏览器都支持这...
实际上,函数体内可以通过 arguments 对象来接收传递进来的参数。 代码如下: function box() { return arguments[0]+’ | ‘+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 ...
ECMAScript中的函数并不介意传递的参数有多少,也不介意是什么类型。由于JavaScript允许函数有不定数目的参数,所以我们需要...这就是arguments对象的由来。这篇文章将详细介绍Javascript中的arguments对象和使用方法。
2. **引用值**:即对象,它们存储在堆上,变量实际上只包含一个指向实际对象所在的另一个内存位置的指针。 #### 三、原始值与按值传递 当一个原始值被赋值给一个变量时,解释器会判断这个值是否为原始值。如果确定...
7.7.4没有arguments对象 65 7.7.5定义方法时使用箭头函数 65 7.7.6不能用作构造函数 65 7.7.7没有原型 65 7.7.8不能作为生成器 65 7.7.9返回对象字面量 65 7.8小结 65 第8章集合和映射 67 8.1Set 67 8.1.1基本语法 ...
- arguments对象,用于访问函数调用时传递的参数。 - 箭头函数(ES6引入,但与ECMAScript 5.1相关联,因为它是在5.1之后出现的)提供简洁的语法来定义函数。 4. **对象** - 对象是键值对的集合,键可以是字符串...
- **Arguments 对象**:表示函数调用时传递的参数集合。 #### 七、表达式 ECMAScript 5.1 规定了多种表达式的语法和语义,包括: - **主值表达式**:表达式的基本组成部分。 - **this 关键字**:指向当前对象的...
还有`arguments`对象的`callee`属性的可选替代`Function.prototype.caller`,用来获取调用当前函数的函数。 3. **数组增强**:ECMAScript 5.1引入了数组的多种新方法,如`forEach()`, `map()`, `filter()`, `reduce...
需要注意的是,arguments对象中包含的参数并不受限于函数定义时所声明的参数列表,即使函数没有声明参数,也可以通过arguments对象获取传递给函数的参数值。通过使用arguments对象,开发者可以在函数内部访问所有...
箭头函数与传统的函数表达式相比,不仅写法更简洁,而且没有自己的this、arguments、super或new.target绑定,这使得函数中的this引用自动绑定到封闭执行上下文。 此外,ES6还引入了模板字符串,它允许我们在字符串...
2. **Arguments对象**:在函数内部,Arguments对象包含了传入函数的所有参数,提供访问这些参数的方法: - `callee`:引用当前正在执行的函数。 - `length`:传递给函数的参数数量。 3. **Array对象**:表示数组...
arguments对象是ECMAScript函数中的一个特殊对象,它可以接收传递进来的参数。arguments对象的length属性可以得到参数的数量。我们可以利用length这个属性,来智能的判断有多少参数,然后把参数进行合理的应用。 ...
在JavaScript编程中,...需要注意的是,随着ECMAScript 6的推出,一些新的特性如箭头函数不支持arguments对象,这可能会对使用这些隐含参数带来影响。因此,在实际编程中需要权衡它们的使用,以达到最佳的代码效果。
活动对象除了存储变量和函数声明外,还包含了函数的参数(formal parameters)和arguments对象。在函数执行过程中,所有的局部变量、内部函数声明和参数都被添加到活动对象中。 在函数中声明变量时,实际上是在活动...
首先来看arguments对象,它是函数内部可用的一个类数组对象,包含着传递给函数的所有参数。通过arguments对象,函数可以在任何位置访问任意数量的参数,即使这些参数在函数定义时未明确声明。arguments对象为开发者...
在ECMAScript6中,函数剩余...总结来说,ECMAScript6的剩余参数提供了一种更简洁、更安全的方式来处理不确定数量的函数参数,使得代码更加清晰,同时也避免了对`arguments`对象的依赖,提高了代码的可读性和可维护性。