ES6 - rest 参数 与 arguments 对象

rest 参数与 arguments 对象的区别:
1)rest 参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
2)arguments对象不是一个真正的数组,而 rest 参数是真正的 Array 实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sort、map、forEach、pop
3)arguments对象还有一些附加的属性 (如callee属性)

arguments 对象

arguments 对象是所有非箭头函数中的函数内部变量(arguments 对象并不是在 ES6 中提出的)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</style>
</style>
</head>
<body>
    <script>
        function fn() {
            console.log(arguments);

            for (var i=0; i<arguments.length; i++) {
                console.log(arguments[i]);
            }
        }
        
        // Arguments(5) [1, 3, 5, 7, 9, callee: ƒ, Symbol(Symbol.iterator): ƒ]
        // 1
        // 3
        // 5
        // 7
        // 9
        fn(1,3,5,7,9);
    </script>
</body>
</html>

rest 参数

rest 参数又叫剩余参数。它允许我们将一个或多个不定数量的实参表示为一个数组。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</style>
</style>
</head>
<body>
    <script>
        function fn(...args) {
            console.log(args);
        }
        
        // (5) [1, 3, 5, 7, 9]
        fn(1,3,5,7,9);

        function f(a, b, ...args) {
            console.log(args);
        }
        
        // (3) [5, 7, 9]
        f(1,3,5,7,9);

        // []
        f(1,3);
    </script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。