JavaScript arguments对象

函数的参数
-> length 属性
在 js 中凡是定义了一个函数, 就是定义了一个对象.
函数与通常的数据是同样的使用: 赋值, 能够调用.css

函数做为对象有一个属性 length 该属性用于描述在定义的时候函数的 参数个数html

-> arguments 对象
所谓 arguments, 就是参数的复数形式. 也就是在调用函数的时候, 会给函数传入参数
可是有时不肯定须要传入多少参数, 全部在调用时传入的参数都会被 arguments 获取到.
简单的说 arguments 中存储的就是参数的集合.数组

在实际调用的时候 arguments 就是实际调用时传入的全部参数dom

问题: 如何判断函数参数调用符合函数的定义?
如何判断调用时的参数个数与函数定义时的参数个数同样?
函数名.length === arguments.length函数

使用 arguments 能够保证在函数定义不写参数的状况下, 也能够得到函数调用时传入的全部参数.
所以在不肯定函数有多少参数和须要函数有动态参数的时候使用.
1> 好比, 求两个数组中较大的数字
function max( a, b ) {
return a > b ? a : b;
}
若是须要判断多个数字中较大的数字,代码以下:spa

    function max(){
        var args = arguments;
        var maxNum = args[0];
        for(var i=1;i<args.length;i++){
            if(maxNum<args[i]){
                maxNum = args[i];
            }
        }
        return maxNum;
    }
    console.log(max(2,3,4,5,6,9))

 


2> 但愿函数有动态参数, 在传入不一样参数的时候有不一样的结果
在 jq 中, css, attr, val, html, text, ...
接下来实现一个 css 方法, 该方法提供两个参数, 一个是 dom 元素, 第二个是一个字符串
用于解释得到什么样式属性值; 也能够带有三个参数, 第一个参数是 dom 元素, 第二个参数
是字符串, 用于告知须要处理哪个样式, 第三个参数就是对应的样式值.code

css( div, 'border' ) -> 得到 div 元素的 border 样式属性的值
css( div, 'border', '1px solid red' ) 为元素 div 设置 border 的样式.htm

代码以下:对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="dv"></div>
</body>
<script>
    function css () {
        var args = arguments;
        // 第 0 个元素是 DOM
        // 第 1 个元素是 对应的样式
        // 第 2 个元素是 须要设置的样式值
        if ( args.length == 3 ) {
            // 设置
            args[ 0 ].style[ args[ 1 ] ] = args[ 2 ]; 
        } else {
            // 获取
            return args[ 0 ].style[ args[ 1 ] ];
        }
    }
    var div = document.getElementById( 'dv' );
    css( div, 'border', '1px solid red' );
    css( div, 'width', '200px');
    css( div, 'height', '100px');
    console.log( css( div, 'width' ) );
</script>
</html>
相关文章
相关标签/搜索