[译]Javascript 参数(arguments)对象

Posted 马大欧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[译]Javascript 参数(arguments)对象相关的知识,希望对你有一定的参考价值。

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

源地址在此:

https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

 

Javascript 参数(arguments)对象是一个在所有函数中都可用的本地变量.其包含了所有传给函数的参数,并且像数列一样排着序.参数对象的长度就是传给函数的参数个数.

 

JavaScript 参数对象例子:

function printArguments() 
{
    document.write("Number of arguments = " + arguments.length + "<br/>")
    for (var i = 0; i < arguments.length; i++) 
    {
        document.write("Argument " + i + " = " + arguments[i] + "<br/>");
    }
    document.write("<br/>");
}

printArguments();
printArguments("A", "B");
printArguments(10, 20, 30);

可以将任意个数的参数传给Javascript函数吗

可以的.你可以传任意个数的参数给任意Javascript函数.所有的参数将会被存在参数对象中

function addNumbers() 
{
    var sum = 0;
    document.write("Count of numbers = " + arguments.length + "<br/>")
    for (var i = 0; i < arguments.length; i++) 
    {
        sum = sum + arguments[i];
    }
    document.write("Sum of numbers = " + sum);
    document.write("<br/><br/>");
}

addNumbers();
addNumbers(10, 20, 30);

参数对象只在函数内部有效.在函数外部试图获得参数对象的话只会导致undefined错误.尽管你可以像数列一样给arguments排序,但是其并不是数列.除了长度属性以外,参数对象并没有其他数列所拥有的属性.比如数列所拥有的sort()方法,参数对象并没有.但是,你可以轻易地将参数对象转换成一个数列.

将Javascript参数对象转换成一个数列

function numbers() 
{
    var argsArray = Array.prototype.slice.call(arguments);
    argsArray.sort();
    document.write(argsArray);
}

numbers(50, 20, 40);

Output : 20, 40, 50

以上是关于[译]Javascript 参数(arguments)对象的主要内容,如果未能解决你的问题,请参考以下文章

javaScript的arguments传参数

随笔:JavaScript函数中的对象----arguments

JavaScript中的arguments,callee,caller

JavaScript 之 function函数及参数arguments

JavaScript中使用arguments来实现不定参数的计算

JavaScript 学习-22.函数参数(arguments 和 rest 参数)