JavaScript 你可能会忘记的基础知识 (2)函数和参数表

来源:互联网 发布:诸神黄昏神羽进阶数据 编辑:程序博客网 时间:2024/06/08 10:09

基本概念

函数:用来封装多个语句。ECMAScript定义时不必指定返回值,因为可以在任何时候返回任何值,且如果没有返回值则默认返回undefined

    function re(){};     console.log(re()); //undefined

关于函数的参数表:

  • 传入函数的参数可以和函数的参数表上面显式声明的参数的数目不同
    原因:每当调用函数式,解析器会为该函数创建一个arguments数组的函数内部变量。然后把函数表的参数和arguments数组对应的元素同步。例如:

    function fun(one,two.three){    ....}/*arguments[0] = one = 1 ;arguments[1] = two = 2;arguments[2] = three = 3;arguments.length = 2;*/fun(1,2,3); /*arguments[0] = one = 1 ;arguments[1] = two = 2;three = undefined; 而且没有arguments[3]arguments.length = 2;*/fun(1,2)
  • 另外要注意:arguments数组的长度是由传入参数 实际值得个数决定的。并不是由函数参数表上面的参数决定的。如果你在函数内部调用不存在的arguments下标 显然是错误的。例如arguments.length =1 在内部调用arguments[1] = XXX; 显然 arguments[1]不存在。所以是禁止的。

  • arguments 和参数表之间的同步。只是值得同步,不是使用同一块内存空间。虽然每次改变都会同步,但也是值得同步。

0 0