最近开始学习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写的第一篇日志,棒棒哒,给自己鼓个掌。