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 });

 

Javascript技巧与模式

Javascript专题