概要

  1. 函数的声明
  2. 函数参数
  3. 函数的返回值
  4. 立即调用的函数表达式(IIFE)
  5. 函数作用域

函数以一段可以反复调用的代码块。

1、函数的声明

function 命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。

  1. function print() {
  2. console.log("hello");
  3. }

函数表达式除了用function命令声明函数,还可以采用变量赋值的写法

  1. var print = function() {
  2. console.log("hello");
  3. }

2、函数参数

函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。

  1. function add(x, y) {
  2. return x + y;
  3. }
  4. add(2, 3); // 5

3、函数返回值

可以使用return来设置函数的返回值,可以定义一个变量,来接收返回值结果。在函数中return后的语句都不会执行,如果函数中不写return,则也会返回undefined

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

在JS中,圆括号()是一种运算符,跟在函数名之后,表示调用该函数。比如,add()就表示调用add函数。那如何让函数自己执行呢?

  1. (function() {/* code */}());
  2. // 或者
  3. (function() {/* code */})();

5、函数作用域

作用域指的是变量存在的范围。在ES5的规范中,JS只有两种作用域:一种是全局作用域,变量在整个程序中一直存在,所有地方都可以读取;另一种是函数作用域,变量只在函数内部存在。
ES6又增加了块级作用域。

函数外部声明的变量就是全局变量,他可以在函数内部读取。

  1. var v = 1;
  2. function f() {
  3. console.log(v);
  4. }
  5. f();

在函数内部定义的变量,外部无法读取,称为“局部变量”

  1. function f(){
  2. var v = 1;
  3. }
  4. v // ReferenceError: v is not defined

注意,对于var命令来说,局部变量只能在函数内部声明,在其他区块中声明的,一律都是全局变量。

  1. if(true){
  2. var x = 5;
  3. }
  4. console.log(x); // 5