• JS Arguments详解


    Arguments详解

    Arguments特性

    • arguments对象和Function是分不开的。
      • 因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。
    • 虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同。
    • 在js中不需要明确指出参数名,就能访问它们。

    Arguments相关属性

    • 利用arguments.callee实现递归
      • callee是指向自身函数fun
        function fun(num) { 
            if(num<=1) { 
                return 1; 
            }else { 
                return num * arguments.callee(num-1);
            } 
        } 
        console.log(fun(5));
    
    • 利用arguments.length实现方法的重载
      • arguments不是数组,而是一个类数组对象
      • 重载的定义是指函数的方法名相同,但参数不同。
        function add() {
            var len = arguments.length,
                sum = 0;
            for(;len--;){
                sum += arguments[len];
            }
            return sum;
        }
        console.log(add(1,3,5));
    
    • 利用arguments[Symbol.iterator]的迭代器枚举的值
      • Symbol类型的值都是独一无二的,该键指向的值是一个values函数
        // 该值是一个生成迭代器的函数,下面是ES6入门的部分文档
        let arr = ['a', 'b', 'c'];
        let iter = arr[Symbol.iterator]();
        console.log(iter.next());           // { value: 'a', done: false }
        console.log(iter.next());           // { value: 'b', done: false }
        console.log(iter.next());           // { value: 'c', done: false }
        console.log(iter.next());           // { value: undefined, done: true }
    
        function fun(){
            console.log(arguments[Symbol.iterator]);
            let iterator = arguments[Symbol.iterator]();
            console.log('iterator:',iterator);
            console.log(iterator.next());
            console.log(iterator.next());
            console.log(iterator.next());
            console.log(iterator.next());
        }
        fun('tom',[1,2,3],{name:'Janny'});
    

    ES6中替代arguments的rest参数

    • 使用背景:es6的
    • 优点:arguments是伪数组,而rest参数是真数组
        function fn(...args){
            console.log(args);  //数组:[1,2,3,4,5]
        }
        fn(1,2,3,4,5)
    
  • 相关阅读:
    面向对象的三大特性(封装、继承、多态)-----继承
    前端---HTML
    几个排序算法的python实现
    构造方法关键字---this
    构造方法中关键字-- super
    多态(instanceof)
    接口
    抽象
    继承(重写与重载对比)
    数组的逆序
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/13428507.html
Copyright © 2020-2023  润新知