提升

函数声明提升

函数要点 - 图1
但是
函数要点 - 图2

函数优先提升

函数要点 - 图3

隐式参数(arguments)

在JavaScript 函数有个内置的对象 arguments 对象。
argument 对象包含了函数调用的参数数组。
函数要点 - 图4
例如函数本身是无参的,但我们硬要传实参
函数要点 - 图5
我们查看结果:
函数要点 - 图6
将其展开
函数要点 - 图7
所以我们知道了,其实这个对象的作用就是按顺序依次来存实参的,很像数组但却不是,所以叫类数组对象,自然也就不能调用数组方法。
不过我们依然可以按下标访问某一项
函数要点 - 图8

函数要点 - 图9

特性应用

那么依旧这一特性,我们可以更便捷的完成某些需求

传入任意个参数,计算它们的和

  1. 简化代码
  2. <body>
  3. <script>
  4. function fun()
  5. {
  6. var sum = 0;
  7. for(var i=0;i<arguments.length;i++)
  8. sum+=arguments[i];
  9. console.log('所有参数的和是'+sum);
  10. }
  11. fun(33,44,55,66);
  12. </script>
  13. </body>

函数要点 - 图10

IIFE(立即调用函数表达式)

函数要点 - 图11
注解:statements表示任意语句,形式代替下。

函数要点 - 图12

它的作用就是更加简便
如:
函数要点 - 图13
函数要点 - 图14
在例如:
函数要点 - 图15
不管哪个元素都是5

函数要点 - 图16
也在此形成了一个闭包