Javascript箭头函数的好处
Javascript箭头函数有两个好处:首先,使用箭头函数能够比传统普通函数更少一些动词,比如function或return等待。
传统函数如下:
const arr = [1, 2, 3];
const squares = arr.map(function (x) { return x * x });
而使用箭头函数则如下:
const squares = arr.map(x => x * x);
箭头函数的具体语法如下:
() => { ... } // 没有参数
x => { ... } // 一个参数 一个标识符
(x, y) => { ... } // 几个参数
方法内容体:
x => { return x * x } // block块
x => x * x // expression表达式, 等同于上面一行
使用箭头函数的第二个好处是能够识别词法(Lexical )变量,它的值是有程序的结构决定的,它能从周围上下文作用域中接受值,比如:
const x = 123; function foo(y) {
return x; // 可以从作用域中接受x值
}
传统函数都是有一个动态的this,它的值是由它们如何被调用的方式决定,而箭头函数有一个词法this,它的值是由周围作用域决定的。下面这些变量能够由作用域决定被箭头函数接受:
- 参数
- super
- this
- new.target
不过请注意,不能在箭头函数内容体中使用语句statement作为表达式expression。
表达式是会产生值的:
3 + 4
foo(7)
'abc'.length
而语句是做事:
while (true) { ··· }
return 123;
如果一个表达式是箭头函数内容体,你不需要括弧了:
asyncFunc.then(x => console.log(x));
而语句则是需要放入括弧中:
asyncFunc.catch(x => { throw x });