JavaScript函数的Arguments

170 阅读2分钟

arguments 描述

 arguments对象是所有函数中可用的局部变量。你可以使用arguments对象在函数中引用函数的参数此对象包含传递
 函数的每个参数的条目第一个条目的索引从0开始。例如,如果一个函数传递了三个参数,你可以参考它们如下:

    arguments[0]
    arguments[1]
    arguments[2]
    
    arguments 对象仅在函数内部有效,在函数外部调用 arguments 对象会出现一个错误。
    arguments的typeof返回’object‘。
    console.log(typeof arguments); // 'object'

可以使用索引来确定各个arguments的类型

参数也可以被设置:对应传递给函数的参数 实参集合下面重点说一下不定项求和

不定项求和例1

 <script>
    //不定项求和,
    //参数传递sum2(1,2) sum2(2,3,4,5,6)
     function sum2() {
        //所有实参都在argumments中存储,我们要做的是 把arguments中的每一项加起来
        //然后把结果返回出去
        var num = 0;   //=var 一个变量用来接收结果
        for (var i = 0; i < arguments.length; i++) {
            // arguments[i] 函数的每个参数的条目第一个条目的索引从0开始i代表从0开始
            num += arguments[i] //结果累加
        }
      return num
    }
    var res1 = sum2(1, 2)//3
    var res2 = sum2(2, 3, 4, 5, 6)//25
    console.log(res1,res2)
 </script>

不定项求和例2

 <script>
  //不定项求和(2+5)
    function sum2() {
      var num = 0;
      for (var i = 0; i < arguments.length; i++) {
      if (typeof arguments[i]=='number'&& !isNaN(arguments[i])) {
         //先利用typeof判断 过滤掉非数字类型,因为NaN也属于数字类型防止加起来结果为NaN
         //所以需要使用isNaN判断是否为非有效数字
           num += arguments[i];//结果累加
         }
       }
          return num;
      }
    console.log(sum2('1', 'w', 2, 5, 'q',NaN)) //7
</script>

不定项求和例3

 <script>
 //思路==>由于结果需要把字符串的数字也相加所以先把每一项转化为数字类型,在判断数字类型的项是否为非有效数字
  function sum() {
    var str = 0;
    for (var i = 0; i < arguments.length; i++) {
        var col = Number(arguments[i])
        if (!isNaN(col)) {
            str += col;
        }
        null;
    }
    return str;
}
let total = sum(10, 20, '30', '哈哈哈', '40',NaN,undefined);//100
console.log(total);

注意

     1.函数别忘记返回值(return)否则结果为undefined
     2.ES6中的箭头函数没有自己的 arguments 对象 
     3.ES6中的箭头函数没有自己的 this