箭頭函式和普通函式的區別

2022-08-02 03:48:09 字數 1204 閱讀 5928

// 普通函式

function f1()

f1()

// 箭頭函式: 箭頭函式相當於匿名函式,如果沒有引數,就只寫乙個(),有引數直接寫在(引數1,引數2)

let f2 = () =>console.log("ddd");// 如果函式裡面只有乙個表示式,可以省略{}和return

f2()

let f3 = ()=>和return

console.log("我是箭頭函式");

f1()

}f3()

// 區別1.箭頭函式是匿名函式,所以不能作為建構函式,因此也不能使用new

let func = () =>

let newfunc = new func() //會報錯; uncaught typeerror: func is not a constructor

// 區別2.箭頭函式不繫結arguments,取而代之的是用rest引數解決

function f4(a)

var a = [2,3,5,6,87]  

f4(a)  // arguments [array(5), callee: ƒ, symbol(symbol.iterator): ƒ]

let f5= (a) =>

f5(3,4,5,78,5) // 會報錯;uncaught referenceerror: arguments is not defined 

let f6 = (...a)=>

f6(3,45,6,7,8) // 輸出 3,45,6,7,8

// 區別3.箭頭函式不繫結this,但會捕獲上下文的this   ,作為自己的this

var b = 100

var obj =  

},c:()=>

}obj.b()

obj.c()

var obj2 = ,

c: function () }}

obj2.b();

obj2.c()();

let obj3 = ,

c:function(n)

return f.call(m,n)}}

console.log(obj3.b(1));

console.log(obj3.c(1));

箭頭函式和普通函式的區別

面試時被問到箭頭函式和普通函式的區別。借用別人的乙個栗子 function make var testfunc make.call testfunc testfunc.call object object可以看到箭頭函式在定義之後,this 就不會發生改變了,無論用什麼樣的方式呼叫它,this 都不...

普通函式和箭頭函式的區別

箭頭函式 let fun 普通函式 function fun 箭頭函式相當於匿名函式,並且簡化了函式定義。箭頭函式有兩種格式,一種只包含乙個表示式,連和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略和return。1 箭頭函式是匿名函式,不能作為建構函式,不能使用new let ...

普通函式和箭頭函式的區別

一 箭頭函式全是匿名函式,普通函式也可以有匿名函式,也可以有具名函式。function a let a function let a 二 箭頭函式不能用於建構函式,不能使用new。三 箭頭函式不繫結this,會捕捉其所在上下文的this指,會作為自己的this值,沒有辦法改變其指向 var obj ...