



在ES5中,定义一个函数必须使用function关键字,其基本格式如下:
function functionname()
{
这里是要执行的代码
}
在ES6中,为了更简洁方便地定义和调用函数,可以使用箭头(=>)来定义函数。例如下面这段代码:
const fn=(a,b)=>a+b;
fn(3,4);
7
调用函数fn(3,4),输出结果为7。该函数有两个参数:a和b,函数执行代码是a+b,并将其计算结果返回,等同于ES5中的写法,如下所示:
var fn = function(a,b){
return a+b;
}
如果箭头函数不需要参数,可以省略小括号()。例如下面这段代码:
let fn=()=>3.14; fn(); 3.14
调用函数fn(),输出结果为3.14,表示该函数直接返回一个具体的值3.14,没有任何参数。这段代码等同于ES5中的代码:
var fn=function(){return 3.14};
箭头函数的后面就是具体的执行语句,如果这部分代码多余一条语句,就需要使用大括号将其括起来,形成一个代码块,并用return语句将其返回。例如下面这段代码:
调用函数fn(6),输出结果为36,调用函数fn(-5),输出结果为-25。如果去掉这段代码中箭头后面的大括号{},这段代码就会报错。
在ES5中,经常使用this对象指向window对象,以便获取更多的操作,而在ES6中,如果使用箭头函数,就要慎重使用this对象。先来看下面这段代码:
let name='Sean';
let fn=()=>{
return 'My name is '+this.name;
}
fn();
执行这段代码后,控制台输出'My name is ',而我们期望它能正常输出'My name is Sean'。这是因为在箭头函数中并不存在this对象,所以这里的this其实是一个undefined对象, name也是一个空值。如果想得到期望的值,就可以将上面代码中的this关键字去掉,然后重新执行这段代码即可。