箭頭函式和this

2022-09-10 10:48:13 字數 2334 閱讀 6033

箭頭函式

es6新增了乙個使用箭頭符號(=>)定義函式的語法特性

函式**:

let f=function

()

箭頭函式語法:

let f=()=>"li";

let f=function

(name)

箭頭函式語法:

let f=引數=>返回值 ;

let f=(name)=>name;
let f=()=>{}

let f=(x,y)=>

console.log(f(10,20)); //

30

let f=function

(name)

}console.log(f("li").name); //

liconsole.log(f().age); //

100

箭頭函式:

let f=引數=>(物件==>return)

let f=name=>()

let f=()=>name+","+age;

console.log(f()); //

li,100

(function

(name))("li")

箭頭函式:

((name)=>)("li")
擴充套件1)箭頭支援一些內建函式的使用,比如 sort() 排序

let arr=[3,2,1].sort((a,b)=>a-b);

console.log(arr);

//[1, 2, 3]

2) 不確定引數時,不支援 arguments ,支援使用...other模式

arguments 對應函式傳遞(實參)的所有引數 ,通過索引下標引用,第乙個引數在索引0處

不過在箭頭函式中是不支援該繫結的,

箭頭函式使用...other 

let f=(...other)=>

console.log(f(10,20)); //30

3) 箭頭函式也可以被 typeof 和 instanceof

let f=()=>{}

console.log(

typeof f); //

function

console.log(f instanceof function); //

true

this指向在es6之前this的指向一直是乙個比較頭疼的問題

this全域性指向window,在某個物件內部指向當前物件。而上面的例子可以看到當obj物件下包含了類似settimeout函式內部,此時this指向就會出現問題。web環境下會指向windeow,node環境下指向settimeout。我這裡this指向了window,因為window是有乙個名為name的內建屬性,返回就是預設值 空,而age不屬於window內建屬性的,返回就是undefined。這顯然不是想要獲得的內容。

在之前處理這種情況的常用的方法,就是將this在settimeout外部進行賦值儲存:

箭頭函式的出現,徹底解決了this在內部指向問題,指向所需的函式體本身。箭頭函式中this是最外層定義的函式繫結,不受內部影響。

let obj=,500)

}}obj.f();

箭頭箭頭函式

var fn function a 一樣 jineng function 箭頭函式外面指向誰就指向誰 有function.console.log fn3 1 像函式表示式 this指向不變.不能作為建構函式 不能使用new 返回物件的話.外部用括號 var fn7 name asdfnasd age...

js 箭頭函式和this

要討論this,就一定要與函式一起討論。普通函式中,this所表示的意義與他所處的環境有關。環境屬於誰,this就指代誰。觀察列印結果,你會發現this.age沒有值,列印結果是nan,表示沒有age的值不是乙個number型別,無法自增加一。function person 1000 var o n...

symbol和箭頭函式

symbol是es6新引入的一種基本資料的值 是一種獨一無二的值 他是js裡面的第七種型別 es6資料型別有 number,string,boolean,object,null,undefined symbol 1,symbol 函式不能用new命令 因為symbol是原始資料型別,不是物件。可以接...