zoukankan      html  css  js  c++  java
  • ☀【arguments】

    《JavaScript权威指南》
    深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解
    http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <script>
            // 尽管定义 JavaScript 函数时有固定数目的命名参数,但当调用这个函数时,传递给它的参数数目却可以是任意的。Arguments 对象允许完全地存取那些实际参数值,即使某些或全部参数还没有被命名。假定定义了一个函数f,要传递给它一个实际参数x。如果用两个实际参数来调用这个函数,那么在函数体内,用形式参数名 x 或 arguments[0] 可以存取第一个实际参数。而第二个实际参数只能通过 arguments[1] 来存取
            // 验证调用函数时是否使用了正确数目的实际参数
            function f1(x, y, z) {
                if (arguments.length !== 3) {
                    console.log('function f called with ' + arguments.length + ' arguments, but it expects 3 arguments.');
                }
            }
            f1(1, 2);
            // 接受任意数目的实际参数,然后返回其中最大的参数的值
            function max() {
                var m = Number.NEGATIVE_INFINITY;// NEGATIVE_INFINITY 属性表示小于 Number.MIN_VALUE 的值。该值代表负无穷大
                for (var i = 0, len = arguments.length; i < len; i++) {
                    if (arguments[i] > m) {
                        m = arguments[i];
                    }
                }
                return m;
            }
            console.log(max(1, 10, 100, 10000, 4, 5, 6));
            function f2(x) {
                console.log(x);
                arguments[0] = null;
                console.log(x);
            }
            f2(2);
            // Arguments 对象还定义了 callee 属性,用来引用当前正在执行的函数。这个属性没有太大用处,但它可以用来允许对未命名的函数递归地调用自身
            console.log(function (x) {
                if (x <= 1) {
                    return 1;
                }
                return x * arguments.callee(x - 1);
            } (3));
    
            function f3(x, y) {
                arguments[1] = 10;
                console.log(y);
                console.log(arguments[1]);
            }
            f3(1, 2);// 10 10
            f3(1);// undefined 10
        </script>
    </body>
    </html>
  • 相关阅读:
    smtp发送邮件
    鼠标点击成烟花js代码
    使用Database Control访问数据库问题解决了
    ext grid 的每行最后一列添加 按钮
    jquery对下拉框的操作
    SQL Server 2005中DateTime类型转换为Varchar类型的所有格式
    winform安装项目、安装包的制作、部署
    js解释器rhino查看执行环境
    ecma2623执行环境练习
    javascript排序算法
  • 原文地址:https://www.cnblogs.com/jzm17173/p/2698792.html
Copyright © 2011-2022 走看看