JS arguments对象

最近开始学习JS, 因为东西太多,而且比较繁琐。所以把自己的学习心得记录在这里,可以加深一下印象。

今天接触到了JS的arguments对象。查阅了一些资料,现在总结一下。


arguments对象是JS的内置对象,不能显式的进行创建。是Array-like(类似于数组)对象,是函数的参数组成的对象。可以通过数组形式访问arguments对象的值。

arguments[0],arguments[1],...

也可以通过这种形式为arguments赋值,

arguments[0] = 'arg0';arguments[1] = 'arg1';...

arguments 对象类似于数组,但不是数组,arguments只有一个数组的属性--length;

arguments.length 表示函数参数的长度, 及参数的个数。

arguments可以转化成数组(三种方式):

var args = Array.prototype.slice.call(arguments);    //对象冒充

var args = Array.from(arguments);                         //Array.from方法

var arguments = [...arguments];        //spread syntax , 详情请见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator


既然讲到了函数参数, 我们就来研究一下函数的参数形式。

Javascript中函数参数分为显式参数跟隐式参数。显式参数在函数定义式列出。例如

functionName (parameter1,parameter2, parameter3) {

  //代码块

}     //当中的parameter1,parameter2, parameter3  即为显式参数

而隐式参数(arguments)是在函数调用是传递给函数的真正的值。

函数在调用时如果缺少参数,参数会默认设置为:undefined.

如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。只能使用 arguments 对象来调用。

既然arguments是函数参数组成的类似于数组的对象,那么我们当然通过arguments来获取函数的参数。

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
    var i, max = 0;
    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;

}

arguments常用的属性:

1.arguments.callee     Reference to the currently executing function

2.arguments.length    Reference to the number of arguments passed to the function


举一个例子,来自MDN

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);        //这里的参数1,表示从arguments[1]开始取值
  return args.join(separator);
}

// returns "...., orange, blue"
myConcat(", ", "....", "orange", "blue");

// returns "elephant; giraffe; lion; cheetah"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");

// returns "sage. basil. oregano. pepper. parsley"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");


到这里,对arguments对象应该有一个初步的了解了。

在CSDN写的第一篇日志,棒棒哒,给自己鼓个掌。







你可能感兴趣的:(JS arguments对象)