100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 058_JavaScript函数arguments对象

058_JavaScript函数arguments对象

时间:2021-10-16 11:25:52

相关推荐

058_JavaScript函数arguments对象

1. 参数规则

1.1. JavaScript函数定义不会为参数(parameter)规定数据类型。

1.2. JavaScript函数不会对所传递的参数(argument)实行类型检查。

1.3. JavaScript函数不会检查所接收参数(argument)的数量。

2. 参数默认

2.1. 如果调用参数时省略了参数(少于被声明的数量), 则丢失的值被设置为: undefined。

2.2. 如果函数调用的参数太多(超过声明), 则可以使用arguments对象来达到这些参数。

3. 函数参数值传递

3.1. 如果函数参数非引用类型, 那么函数改变了参数的值, 它不会改变参数的原始值。

3.2. 参数的改变在函数之外是不可见的。

var a = 100;function myFunction(a) {a -= 99; }myFunction(a); document.write('a = ' + a + '<br />'); // 输出a = 100

4. 函数参数引用传递

4.1. 如果函数参数是引用类型, 例如是对象, 如果函数改变了对象属性, 它也改变了原始值。

4.2. 对象属性的改变在函数之外是可见的。

var obj = {b: 'zhangsan'};function myFunction(obj) {obj.b = 'lisi'; }myFunction(obj); document.write('b = ' + obj.b + '<br />'); // 输出b = 'lisi'

4.3. 例子

4.3.1. 代码

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8" /><title>函数参数值、引用传递</title></head><body><script type="text/javascript">var a = 100;var obj = {b: 'zhangsan'};function myFunction(a, obj) {a -= 99; obj.b = 'lisi'; }myFunction(a, obj); document.write('a = ' + a + '<br />');document.write('b = ' + obj.b + '<br />');</script></body></html>

4.3.2. 效果图

5. arguments对象

5.1. 在函数代码中, 使用特殊对象arguments, 开发者无需明确指出参数名, 就能访问它们。

5.2. 我们可以使用arguments[0]的形式访问函数参数, 即第一个参数的值(第一个参数位于位置0, 第二个参数位于位置1, 依此类推):

// arguments[0]访问第一个参数document.write('第一个参数: ' + arguments[0] + '<br />'); // arguments[1]访问第二个参数document.write('第二个参数: ' + arguments[1] + '<br />');

5.3. 实例

5.3.1. 代码

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8" /><title>arguments访问参数值</title></head><body><script type="text/javascript">function myFunction(a, b) {// arguments[0]访问第一个参数document.write('第一个参数: ' + arguments[0] + '<br />'); // arguments[1]访问第二个参数document.write('第二个参数: ' + arguments[1] + '<br />'); return a * b;}myFunction(8, 9); </script></body></html>

5.3.2. 效果图

6. 检测参数个数

6.1. JavaScript不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据Netscape的文档, 最多可接受255个), 而不会引发任何错误。任何遗漏的参数都会以 undefined传递给函数, 多余的参数将忽略。

6.2. arguments对象的length属性返回函数调用实际参数的个数。

function howManyArgs() {// arguments.length返回函数调用实际参数的个数document.write('该函数有' + arguments.length + '个参数<br />'); }howManyArgs(); howManyArgs(8);howManyArgs(8, 'abc');

6.3. 实例

6.3.1. 代码

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8" /><title>arguments length属性</title></head><body><script type="text/javascript">function howManyArgs() {// arguments.length返回函数调用实际参数的个数document.write('该函数有' + arguments.length + '个参数<br />'); }howManyArgs(); howManyArgs(8);howManyArgs(8, 'abc');</script></body></html>

6.3.2. 效果图

7. 模拟函数重载

7.1. 可以使用arguments对象判断传递给函数的参数个数, 即可模拟函数重载:

function doAdd() {document.write('doAdd()<br />');var value = 0;for(var i = 0, l = arguments.length; i < l; i++){value += arguments[i];}document.write('value = ' + value + '<br />');return value;}doAdd(); doAdd(8); doAdd(8, 9);doAdd(8, 9, 10);

7.2. 实例

7.2.1. 代码

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8" /><title>arguments模拟函数重载</title></head><body><script type="text/javascript">// 做加法运算的函数function doAdd() {document.write('doAdd()<br />');var value = 0;for(var i = 0, l = arguments.length; i < l; i++){value += arguments[i];}document.write('value = ' + value + '<br />');return value;}function doAdd(a, b) {document.write('doAdd(a, b) a = ' + a + ', b = ' + b + '<br />');var value = 0;for(var i = 0, l = arguments.length; i < l; i++){value += arguments[i];}document.write('value = ' + value + '<br />');return value;}// 就近原则, 调用doAdd(a, b)doAdd(); doAdd(8); doAdd(8, 9);doAdd(8, 9, 10);</script></body></html>

7.2.2. 效果图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。