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. 效果图

058_JavaScript函数arguments对象相关推荐

  1. JavaScript教程——函数(arguments 对象)

    arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...

  2. JavaScript服务器端开发(函数实参对象arguments使用的几个注意事项)

    为什么引入实参对象arguments 在JS开发中,每一个函数都对应一个实参对象,称为arguments.这个对象引用的目的是为了解决如下问题: 当调用函数的时候传入的实参个数超过函数定义时的形参个数 ...

  3. 使用arguments对象模拟函数重载

    用arguments对象判断传递给函数额参数个数,即可模拟函数重载 function doAdd(){ if(arguments.length == 1){ alert(arguments[0]+10 ...

  4. JavaScript-function函数的arguments对象

    arguments 对象 1. 引出 arguments 在调用 function 函数时,浏览器每次都会传递进两个隐含的参数 函数的上下文对象 this 封装实参的对象 arguments 2. 说 ...

  5. 函数(arguments),作用域,预解析,对象

    函数(arguments) JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.也就是说所有函数都内置了一个arguments对象,arguments对 ...

  6. Arguments(函数参数对象)的属性和使用

    Arguments(函数参数对象) arguments[ ] 函数参数的数组 Arguments 一个函数的参数和其他属性 Arguments.callee 当前正在运行的函数 Arguments.l ...

  7. JavaScript arguments对象

    1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证 ...

  8. JavaScript学习记录 (三) 函数和对象

    1.函数 使用 function 关键字来声明函数 函数的命名规则和变量一样 JS没有函数签名,所以没有函数重载 JS函数中的所有参数都是值传递:不能通过引用传递 // 定义函数 function t ...

  9. JS arguments 对象

    arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 message.用 argument ...

最新文章

  1. Two Straws May Make a Perfect Diamond: Selecting Individually Weak Features for a Better Accuracy
  2. 零压力学python_《零压力学Python》 之 第一章知识点归纳
  3. java imap 标记已读,JavaMail通过IMAP和POP3接收未读以及设置已读邮件
  4. python 数据结构包_python 中numpy科学计算工具包——基础数据结构
  5. EduSoho网络课堂通用版
  6. el 能否定义作用域变量_python命名空间和作用域
  7. 详解Python的max、min和sum函数用法
  8. 一种软件定时器/超时机制的实现方法
  9. 记所内部“与顶级会议作者面对面”系列学术活动交流感受
  10. 九宫格c语言实验报告,9X9,九宫格测试,C编程。
  11. JVM知识点复习(第一次)
  12. iis如何连接mysql_iis怎么连接数据库
  13. Go开发关键技术指南
  14. 福昕阅读器 自定义注释快捷键
  15. 信息安全管理ISO27001
  16. Windows10的右键菜单添加“管理员取得所有权”
  17. 何万青:直呼其名——我与中国计算机学会十年命运交织
  18. linux虚拟机 Ubuntu 安装方法
  19. [附源码]计算机毕业设计JAVA宠物医院管理系统
  20. 如何利用实验室信息管理系统LIMS轻松通过CNAS评审?

热门文章

  1. Zookeeper服务器集群的搭建与操作
  2. haproxy配置文件
  3. ubuntu 安装 phpstorm
  4. bashrc与profile的相关知识
  5. IIS7、IIS8添加net.tcp协议报错 未将对象引用设置到对象的实例。
  6. 了解Master Pages库
  7. VLAN是什么?VLAN交换机端口类型有哪些?—Vecloud微云
  8. Kingbase金仓更改表空间
  9. 对比SQL Server和Oracle的关键参数
  10. Android远程桌面助手(B1391)