javascript JS的争论对象

Posted

tags:

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

/*
js中一切都是对象,函数也是对象,函数名其实是引用函数定义对象的变量
arguments实际上是所在函数的一个内置类数组对象,引用着函数的实参

arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象
arguments[i]: 获得传入的下标为i的参数值
arguments.length: 获得传入的参数个数
*/

function calc(){
    //如果用户传入一个参数,求平方
    if(arguments.length==1){
        console.log(arguments[0]*arguments[0]);
    }else if(arguments.length==2){
    //如果用户传入两个参数,就求和
        console.log(arguments[0]+arguments[1]);
    }
}
calc(4); //16
calc(4,5); //9

//求和
function add(){
    //arguments:[]
    //遍历arguments中每个元素,并累加
    for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]);
    return sum;//返回和
}
console.log(add(1,2,3)); //6
console.log(add(1,2,3,4,5,6)); //21

/*
arguments对象和Function是分不开的。arguments对象不能显式创建,只有函数开始时才可用

虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同
*/

//arguments对象的callee属性
/*
callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用
callee 属性的初始值就是正被执行的 Function 对象,这允许匿名的递归函数
*/
var sum=function(n){
   if(1==n) {
   return 1;
   } else {
    return n + arguments.callee(n-1);
  }
}
alert(sum(6));

//arguments对象大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用

以上是关于javascript JS的争论对象的主要内容,如果未能解决你的问题,请参考以下文章

扩展 javascript 对象及其属性

JavaScript:如何将多个参数传递给对象成员内的回调函数?

能把Python转化为Javascript的4个工具

Vue vs React: Javascript 框架

JS or C#?不存在的脚本之争

js 欺骗词法作用域