说说 JavaScript 函数

来源:互联网 发布:手机windows live设置 编辑:程序博客网 时间:2024/06/06 13:58
  • 函数用 function 关键字声明,后跟一组参数以及函数体。
  • 函数通过函数名来调用。
  • 在函数体中,位于 return 语句之后的任何代码永远不会执行。
  • 一个函数中可以包含多个 return 语句,一般位于 if 条件语句之后。
  • 推荐这样做,要么让函数始终都返回一个值,要么永远不要返回值。这样有利于调试代码。

1 严格模式下对函数的限制

  • 不能把函数命名为eval 或 arguments。
  • 不能把参数命名为eval 或 arguments。
  • 不能出席两个命名参数同名的情况。

2 理解参数

  • 参数再内部是用一个数组表示。函数体内可以通过 arguments 对象来访问这个参数数组,从而获得传递给函数的每一个参数。
  • 可以使用方括号语法来访问 arguments 对象。length 属性表示传递的参数个数:
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>arguments.length 方法可以获知有多少个参数传递给了函数</title></head><body><script type="text/javascript">    function howManyArgs(){        console.log(arguments.length);    }    howManyArgs("String",45);//2    howManyArgs();//0    howManyArgs(12);//1</script></body></html>
  • 可以利用 arguments 对象,让函数能够接受任意个参数,以实现适当的功能(模拟重载):
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title>利用函数能够接受任意参数的能力,实现特定功能</title></head><body><script type="text/javascript">    function doAdd() {        if (arguments.length == 1) {            console.log(arguments[0] + 10);        } else if (arguments.length == 2) {            console.log(arguments[0] + arguments[1]);        }    }    doAdd(10);//20    doAdd(30,20);//50</script></body></html>
  • arguments 对象可以与命名参数一起使用。
  • arguments 对象的值永远与对应的命名参数值保持同步。
  • 没有传递值的命名参数会被自动赋予 undeinfined 值。
  • ECMAScript 中所有参数传递的都是值。

3 没有重载

  • ECMAScript 函数没有签名,因为其参数是 arguments 数组对象。因此没有真正的重载。
  • 如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数。
  • 通过检查传入函数的参数的类型和数量并作出不同的反应,可以模拟方法的重载(就像上一小节所展示的那样)。
0 0