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

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

阅读更多

在一个函数体内,标识符argumens具有特殊意义。它是引用arguments对象的一个特殊属性。Arguments对象是一个类似数组的对象,可以按照数目获取传递给函数的参数值。Argument对象也定义了callee属性。

 

 

 arguments对象还为JavaScript函数开发了一个项重要的可能性,即可以编写函数使之能够使用任意数目的实际参数。  下面是一个判断任意个参数中的最大值的例子:

 

 

function max( /*...*/){
   var m=Number.NEGATIVE_INFINITY;
   for(var i=0;i<arguments.length;i++){
         if(arguments[i]>m)
         {
             m=arguments[i];
         }
   }
   return m;
}

 

像这样能够接受任意数目的参数的函数叫做可变参数函数。

 

记住:arguments并非真正的数组,他是一个Arguments对象。

 

属性callee

除了数组元素,Arguments对象还顶一个callee属性,用来引用当前正在执行的函数。这个属性没有太大的用处,但它可以用来允许对未命名的函数递归地调用自身。下面是一个为名的函数直接量,用于计算阶乘:

funciton (x)
{
  if(x<=1) return 1;
  return x* arguments.callee(x-1);
}
 

 

分享到:
评论

相关推荐

    即用即查JavaScript核心对象参考手册:JavaScript

    字符串是不可变的,提供了一系列的方法如`length`获取长度,`charAt()`、`substring()`、`slice()`获取子串,`indexOf()`、`lastIndexOf()`查找字符位置,`replace()`替换字符串,`toUpperCase()`、`toLowerCase()`...

    python常见面试题1

    - UTF-8:Unicode的一种变体,可变长度编码,兼容ASCII,广泛用于Web。 - GBK:中国国家标准,扩展了GB2312,能表示更多的汉字。 8. **Python 2与Python 3的区别**: 主要包括print语句变为函数、除法运算改变、...

    经典Python面试题之Python基础篇.docx

    - **UTF-8**: Unicode 的一种编码方式,可变长度,兼容 ASCII。 - **GBK**: 中文编码标准,主要用于简体中文。 #### 14. 字节码和机器码的区别? - **字节码**: Python 编译后的中间代码,可以跨平台运行。 - **...

    经典python面试题

    - **可变类型**:列表、字典等,可以修改其元素。 - **不可变类型**:字符串、元组等,一旦创建后不能更改。 #### 30. 示例 ```python v = dict.fromkeys(['k1', 'k2'], []) v['k1'].append(666) print(v) # {'k1'...

    JavaScript初学者需要了解10个小技巧

    这对于处理可变参数数量的函数非常有用。 7. **对象作为函数参数**:在JavaScript中,对象常用于传递一组相关的数据给函数,这样可以组织和优化函数的参数。例如,可以创建一个接受对象参数的函数,对象的键值对...

    C语言错误信息中文解释

    **解释**:函数定义时不接受可变数量的参数,但在调用时提供了可变参数。 **解决方法**:确保函数调用时提供的参数数量与函数定义一致。 以上是对给定文件中的C语言错误信息进行的中文解释及建议的解决方法。希望...

    javascript 5 手册

    - `arguments`对象:函数内部的一个内置对象,它包含了函数调用时传入的所有参数。 4. **数组**: - `Array`对象提供了许多实用的方法,如`push()`, `pop()`, `shift()`, `unshift()`, `slice()`, `splice()`等。...

    JS学习笔记(BOM,DOM,字符串方法等)

    `arguments`对象是函数调用时隐含传入的,它包含了所有传入函数的实际参数,并且可以通过索引来访问,还可以获取参数的长度,其中`arguments.callee`属性指向当前执行的函数。 2. **Date对象**: - Date对象在...

    清华大学精品Python学习PPT课件-第6章 Python函数.rar

    这意味着,如果参数是可变对象(如列表或字典),函数内部对参数的修改会影响到原始对象;如果是不可变对象(如整数、浮点数或字符串),则函数内部无法改变这些对象的值。 第三,函数的默认参数。在定义函数时,...

    04-JavaScript基础.pptx

    函数传参是函数接收输入的方式,JavaScript中的函数支持可变参数,也就是不定参数。`arguments`对象是一个类数组对象,它包含了函数调用时传入的所有参数,无论这些参数是否在函数声明中定义。例如,你可以编写一个...

    python-cheat-sheet:良好实践,准则,设计模式,内置数据类型,笨拙的方法,修饰符和开发的数据结构的集合

    - 可变与不可变参数:`*args`和`**kwargs`允许传递任意数量的位置和关键字参数。 - `default arguments`和`keyword-only arguments`:提供默认值和仅限关键字的参数。 6. **类与面向对象编程**: - 类定义:使用...

    JavaScript重载函数实例剖析_.docx

    在此示例中,函数`add`接受可变数量的参数。如果传递了第三个参数`limitNumber`,则计算`a + b`的结果,并检查是否小于`limitNumber`。如果小于,则返回`limitNumber`;否则返回`a + b`的值。 ##### 2.2 基于参数...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     11.6 可变长度的参数   11.6.1 非关键字可变长参数(元组)   11.6.2 关键字变量参数(字典)   11.6.3 调用带有可变长参数对象函数   11.7 函数式编程   11.7.1 匿名函数与lambda   11.7.2 内...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     11.6 可变长度的参数   11.6.1 非关键字可变长参数(元组)   11.6.2 关键字变量参数(字典)   11.6.3 调用带有可变长参数对象函数   11.7 函数式编程   11.7.1 匿名函数与lambda   11.7.2 内...

    javascript代码,通俗易懂

    数组是一个用于存储多个值的数据结构,它的长度是可变的,而且可以包含不同类型的元素,尽管建议尽量存储相同类型的数据以方便操作。数组在 JavaScript 中有以下两种定义方式: 1. 使用中括号 `[]`: ```javascript...

    (完整版)C++选择题练习.docx

    - const指针(Pointer to const):选项B和D中的`const int *`表示指针指向的内容不可变,因此不能用于修改x的值。 - const引用(Reference to const):选项D的`const int a`是一个常量引用,不能用于修改x的值,...

    JavaScript中的apply和call函数详解

    值得注意的是,在JavaScript中,每个函数都接受一个名为arguments的可变长度参数列表。arguments是一个类数组对象,包含了传递给函数的所有参数,它有一个length属性,但不具备数组的其他方法。在某些情况下,如果...

    C语言错误解释和总结

    - **Type name does not support '...' arguments**: 类型名不支持变长参数列表。 - **Undefined behavior**: 不确定行为,通常是因为代码中存在逻辑错误或违反了C语言标准的行为。 - **Undefined identifier 'xxx'*...

    JDK1.5 for Mac OS

    7. **可变参数长度的方法(Variable-Length Method Arguments)** 除了变量注入,JDK 1.5还支持在方法签名中使用可变参数长度,允许方法接收不定数量的参数。 8. **静态导入(Static Import)** 静态导入允许将类...

Global site tag (gtag.js) - Google Analytics