函数的参数
-> 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>