箭頭函式:
let fun = () =>
普通函式:
function fun()
箭頭函式相當於匿名函式,並且簡化了函式定義。箭頭函式有兩種格式,一種只包含乙個表示式,連和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略和return。
(1)箭頭函式是匿名函式,不能作為建構函式,不能使用new
let funconstructor = () =>
let fc = new funconstructor();
(2)箭頭函式不繫結arguments,取而代之用rest引數...解決
function a(a)
a(1,2,3,4,5,8); // [1, 2, 3, 4, 5, 8, callee: ƒ, symbol(symbol.iterator): ƒ]
let b = (b)=>
b(2,92,32,32); // uncaught referenceerror: arguments is not defined
let c = (...c) =>
c(3,82,32,11323); // [3, 82, 32, 11323]
(3)箭頭函式不繫結this,會捕獲其所在的上下文的this值,作為自己的this值
var obj =
},c: function()
}}obj.b();
obj.c();
var obj = ,
c: function()
}}obj.b();
obj.c()();
let obj2 = ,
c: function(n) ;
return f.call(m,n);}};
console.log(obj2.b(1)); // 11
console.log(obj2.c(1)); // 11
(5)箭頭函式沒有原型屬性
var a = ()=>
function b()
console.log(a.prototype); // undefined
console.log(b.prototype); //
(6)箭頭函式不能當做generator函式,不能使用yield關鍵字(es6)
總結:普通函式的this指向呼叫它的那個物件
箭頭函式和普通函式的區別
面試時被問到箭頭函式和普通函式的區別。借用別人的乙個栗子 function make var testfunc make.call testfunc testfunc.call object object可以看到箭頭函式在定義之後,this 就不會發生改變了,無論用什麼樣的方式呼叫它,this 都不...
普通函式和箭頭函式的區別
一 箭頭函式全是匿名函式,普通函式也可以有匿名函式,也可以有具名函式。function a let a function let a 二 箭頭函式不能用於建構函式,不能使用new。三 箭頭函式不繫結this,會捕捉其所在上下文的this指,會作為自己的this值,沒有辦法改變其指向 var obj ...
箭頭函式和普通函式的區別
首先知道一下什麼是箭頭函式,箭頭函式就是沒有function關鍵字,而是乙個類似箭頭的函式 var a 相當於 es6新特性有哪些?function a 那麼就來看一下他們的區別 箭頭函式作為匿名函式,是不能作為建構函式的,不能使用new var b var b new b typeerror b ...