`
iwebcode
  • 浏览: 2014024 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

{{JS}}可变长度的参数列表: Arguments对象

 
阅读更多
{{JS}}可变长度的参数列表: Arguments对象
在一个函数体内, 标识符arguments具有特殊含义. 它是引用Arguments对象的一个特殊属性. Arguments对象是一个类似数组的对象, 可以按照下标获取传递给函数的参数值. Arguments对象也定义了callee属性.

Arguments对象可以用于多个方面.
1. 检测函数调用时是否具有正确数目的实参.
function f(a, b) {
if(arguments.length !== 2) {
throw new Error("函数期待2个参数");
}
//todo :
}

2. 编写可变参数函数
function max(/* ... */) {
var m = Number.NEGATIVE_INFINITY;
for(var i = 0; i < arguments.length; i++) {
if(arguments[i] > m) {
m = arguments[i];
}
}
return m;
}

var largest = max(3, 5, 100, 88, 99, 11, 10000);

3. Arguments对象有一个非同寻常的特性. 当函数具有命名了的参数时, Arguments对象的数组元素是存放函数参数的局部变量的同义词. arguments[]数组和命名了的参数不过是引用同一变量的两种不同方法. 用参数名改变一个参数的值同时会改变通过arguments[]数组获得的值. 通过arguments[]数组改变参数的值也会相应的改变用参数名获取的参数值.如下例:
function f(a) {
console.log(a);
arguments[0] = null;
console.log(a);
}

f(1);

4. 最后请记住arguments只是一个普通的JS标记符, 而不是一个保留字. 如果函数中有一个参数或者局部变量使用了这个名字, 它就会隐藏对Arguments对象的引用. 如下例:
function e(a) {
var arguments = 1; // 隐藏对Arguments对象的引用
console.log(arguments);
}

function f(a) {
console.log(arguments); // 仍然指向Arguments对象的引用
var arguments = 1;
}

function g(arguments) { // 隐藏对Arguments对象的引用
console.log(arguments);
}

e(1,2);
f(1,2);
g(1,2);

故最好把arguments当作一个保留字并避免将其用作变量名.
分享到:
评论

相关推荐

    JS:arguments

    JS:arguments

    Javascript学习笔记之函数篇(四):arguments 对象

    JavaScript中arguments函数对象是该对象代表正在执行的函数和调用它的函数的参数。JavaScript 函数中 arguments 为特殊对象,无需明确指出参数名,就能访问它们。

    javascript 利用arguments实现可变长参数

    javascript arguments解释,实现可变长参数。 在C#中,有可变长参数params[],但是在js中,如何实现这种可变参数呢? 一、可变长参数 arguments是非常好的解决方法,一直不知道javascript有这个东西。 先来看看应用...

    arguments对象的使用

    在函数定义时没有形参名称时,向函数传递参数的使用方法。 实例演示了arguments对象的使用方法。

    理解Javascript函数形式参数与arguments

    理解Javascript函数形式参数与arguments

    JS函数动态传递参数的方法分析【基于arguments对象】

    js函数体内可以通过arguments对象来接收传递进来的参数,利用这一对象属性可以动态传参。 function box() { return arguments[0]+' | '+arguments[1]; //得到每次参数的值 } alert&#40;box(1,2,3,4,5,6&#41;); //...

    js的隐含参数(arguments,callee,caller)使用方法

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的 Function 对象的...

    Javascript中arguments对象的详解与使用方法

    ECMAScript中的函数并不介意传递的参数有多少,也不介意是什么类型。由于JavaScript允许函数有不定数目的参数,所以我们需要一种机制,可以在 函数体内 ...这篇文章将详细介绍Javascript中的arguments对象和使用方法。

    解决python脚本中error: unrecognized arguments: True错误

    主要介绍了解决python脚本中error: unrecognized arguments: True错误,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    JavaScript中arguments和this对象用法分析

    本文实例讲述了JavaScript中arguments和this对象用法。分享给大家供大家参考,具体如下: ...当函数被调用时,传入的参数将保存在arguments类数组对象中,通过arguments可以访问所有该函数被调用时传递给它的参数列表。

    Javascript中的arguments对象

    在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。 1、什么是arguments? 这个函数体内的arguments非常特殊,... 程序中可定义多个相同函数名,不同参数列表的函数,  调用者不必区分每个

    深入解析JavaScript中的arguments对象

    所有的函数都有一个自己的arguments对象,用来储存它实际接受到的参数,而不局限于函数声明时所定义的参数列表。它不是数组却类似数组,具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值...

    深入理解javascript函数参数与闭包

    最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数。本人把学习的过程整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径,避免走弯路。内容有些多...

    js arguments对象应用介绍

    利用arguments对象可以实现重载,利用arguments.length可以获取函数的参数个数,如下: 代码如下: function hi(){ if(arguments.length==1){ alert&#40;arguments[0]&#41;; } else if(arguments.length==2){ a

    javascript下arguments,caller,callee,call,apply示例及理解

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments 该对象代表正在执行的函数和调用它的函数的参数。 [function.]arguments[n] 参数function :选项。当前正在执行的 Function 对象...

    Javascript中arguments对象详解

    在上篇文章中我们讨论了javascript中的默认参数,这篇文章,我们来讨论下javascript的arguments参数对象。 如下例的一个函数,我们如何根据传入参数的不同来做不同的处理呢? 代码如下: function addAll () {  // ...

    javascript内置对象arguments详解

    一、什么是argumentsarguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象。所以agruments对象对于javascript程序员来说是必需...

Global site tag (gtag.js) - Google Analytics