《JavaScript高级程序设计》3.7 函数

时间:2022-04-07 09:16:03
  • 位于return语句之后的代码不会执行;
  • return语句也可以不带有任何返回值. 这种情况下, 函数在停止执行后会返回undefined值. 这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下.
  • 严格模式对函数的限制:
    • 不能把函数命名为eval或arguments
    • 不能把参数命名为eval或arguments
    • 不能出现两个命名函数同名的情况

    如果发生以上错误,就会导致语法错误,代码无法执行  

3.7.1 理解参数

在ECMAScript中,参数在内部是用一个数组来表示的. 因此解析器不会关心传入的参数个数或类型. 命名的参数只提供便利而不是必须的

在函数体内可以通过arguments对象来访问这个参数数组, 从而获取传递给函数的每一个参数.

ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数

arguments对象:

  • 只是与数组类似,但并不是Array的实例, 可以用方括号语法来访问其元素.
  • 可以用length属性来确定传递进来多少个参数
  • arguments对象可以和参数名一起使用, 它的值永远和对应命名参数的值保持同步
  • 没有传递值的命名参数将自动被赋予undefined的值

在严格模式下:

  • 即使对arguments[i]赋值,对应命名参数的值仍然是undefined
  • 重写arguments的值会导致语法错误

3.7.2 没有重载

  因为没有函数签名,因为其函数参数是以一个包含零或多个值的数组的形式传递的.

  但是通过检查传入参数的类型和数量并作出不同的反应, 可以模仿方法的重载.