arguments类数组对象


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    1、在函数调用的时候,浏览器每次都会传递进两个隐式参数:<br>

    一个是函数的上下文对象this,另一个则是封装实参的类数组对象arguments。<br><br>

    2.arguments是类数组对象,除了length属性和索引元素之外没有任何Array属性。<br>
    例如,它没有 pop方法。但是它可以被转换为一个真正的Array:<br>
    <script>
        // function f5() {
        //     // 即使没有形参,也可以用arguments
        //     // 可以使用slice来将arguments转换为真实数组
        //     var args1 = Array.prototype.slice.call(arguments);
        //     var args2 = [].slice.call(arguments);
        //     // 也可以使用Array.from()方法或者扩展运算符来将arguments转换为真实数组
        //     var args3 = Array.from(arguments);
        //     var args4 = [...arguments];
        // }
        // f5('name', 'age');


        function fn() {
            console.log(arguments);
            console.log(typeof arguments); // object
            console.log(toString.call(arguments)); // [object Arguments]
            //Object.prototype.toString === toString true 但是函数可能会导致一些错误,例如如果定义了一个toString函数,那么引用都就是这个函数了
            //注意,直接调用toString()方法这里不可以理解成为全局作用域调用toString()方法,即window.toString();
        }
        fn('name', 'age');


    </script>
</body>

</html>

文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录