箭頭函式與普通函式以及this指向問題

2021-10-09 01:12:10 字數 1036 閱讀 9261

沒有引數只有單條語句

var  fun=()=>consoloe.log("1");

fun();

乙個引數單條語句,可以省略()

var fun=a=>console.log("1");//a就是傳入的單個引數
多個引數多條語句

var fun=(a,b)=>
返回的是物件要加{}

var fun=()=>()
var b=()=>return 1;  var b=new b();//error,b ji not a constructor
function test(a);//1

test(1)

let test1=(...a)=>consoloe.log(a[1])//1

test1(2,1,3)

console.log(test.prototype)//object{}

console.log(test1.prototype)//undefined

let test1=(...a)=>

consoloe.log(a[1])

//error

箭頭函式沒有this,他的this會向上下文去找而不是本身的this,傳統函式的this誰呼叫就是誰

也可以說傳統函式的this是呼叫時候產生的,誰呼叫就是指向誰

箭頭函式的this是函式定義時候產生的,this是繼承自父執行上下文,並不會因為誰呼叫了這個函式而改變,所以箭頭函式的this不會改變

比如下面的arrowfn中的this,箭頭函式本身與arrowfn平級,也就是箭頭函式本身所在的物件就是obj,obj的父執行上下文就是window,所以這裡的this指向的就是window

此外無論箭頭函式的this指向一旦生成就不會更改不會因為誰呼叫而更改this指向

ES6 箭頭函式 以及箭頭函式和普通函式的區別

箭頭函式的基本語法 es6中允許使用箭頭 來定義箭頭函式,具體語法,可以通過乙個例子說明 箭頭函式 let fun name 等同於 let fun function name 從上面的例子可以看出,定義箭頭函在數語法上要比普通函式簡潔得多。箭頭函式省去了function關鍵字,採用箭頭 來定義函式...

箭頭函式與普通函式區別

1 箭頭函式是匿名函式,不能作為建構函式,不能使用new 2 箭頭函式不繫結arguments,取而代之用rest引數 解決 3 this的作用域不同,箭頭函式不繫結this,會捕獲函式定義的上下文中的this值,作為自己的this值,且一直不變 4 箭頭函式沒有原型物件 5 箭頭函式不能當作gen...

箭頭函式 普通函式

箭頭函式的語法比普通函式更簡潔,是乙個匿名函式,不能作為建構函式,且不能使用new 普通函式 letfun 普通函式 function fun 箭頭函式有兩種格式 一種是和return 另一種是把二者省略掉 1 1.不能使用newlet fun let fn newfun 1.function on...