在
es6中,「=>」是指箭頭函數,是一種函數的簡寫方式,語法為(參數)=>{函數體};」。箭頭函數沒原型,沒this、 arguments、super和「new.target」綁定,其值由外圍最近一層非箭頭函數決定;也不能透過new關鍵字呼叫。
沒有原型
##arguments物件
不支援重複的命名參數
#函數體內的this的指向總是指向定義它所在的對象,而不會指向呼叫它的對象,我們知道es5中的函數是誰執行它,它就指向誰。
基礎語法
(param1, param2, …, paramN) => { statements } (param1, param2, …, paramN) => expression //相当于:(param1, param2, …, paramN) =>{ return expression; } // 当只有一个参数时,圆括号是可选的: (singleParam) => { statements } singleParam => {statements } // 没有参数的函数应该写成一对圆括号: () => { statements }
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">x => x * x</pre><div class="contentsignin">登入後複製</div></div>
即相當於:
function (x) { return x * x; }
更短的函數範例
var elements = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ]; elements.map(function(element) { return element.length; }); // 返回数组:[8, 6, 7, 9] // 上面的普通函数可以改写成如下的箭头函数 elements.map((element) => { return element.length; }); // [8, 6, 7, 9] // 当箭头函数只有一个参数时,可以省略参数的圆括号 elements.map(element => { return element.length; }); // [8, 6, 7, 9] // 当箭头函数的函数体只有一个 `return` 语句时,可以省略 `return` 关键字和方法体的花括号 elements.map(element => element.length); // [8, 6, 7, 9] // 在这个例子中,因为我们只需要 `length` 属性,所以可以使用参数解构 // 需要注意的是字符串 `"length"` 是我们想要获得的属性的名称,而 `lengthFooBArX` 则只是个变量名, // 可以替换成任意合法的变量名 elements.map(({ "length": lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9]
#三元運算子範例
箭頭函數也可以使用條件(三元)運算子:
var simple = a => a > 15 ? 15 : a; simple(16); // 15 simple(10); // 10 let max = (a, b) => a > b ? a : b;
不與new一起使用箭頭函數不能用作建構器,和new一起用會拋出錯誤。
var Foo = () => {}; var foo = new Foo(); // TypeError: Foo is not a constructor
var Foo = () => {}; console.log(Foo.prototype); // undefined
var func = x => x * x; // 简写函数 省略return(简写体) var func = (x, y) => { return x + y; }; //常规编写 明确的返回值(块体)
var fact = (x) => ( x==0 ? 1 : x*fact(x-1) ); fact(5); // 120
以上是es6 =>是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!