JavaScripti noole funktsioon

Selles õpetuses saate näidete abil õppida JavaScripti noole funktsiooni.

Noolefunktsioon on üks JavaScripti ES6 versioonis kasutatavatest funktsioonidest. See võimaldab teil luua funktsioone tavaliste funktsioonidega võrreldes puhtamal viisil. Näiteks
see funktsioon

 // function expression let x = function(x, y) ( return x * y; )

saab kirjutada järgmiselt

 // using arrow functions let x = (x, y) => x * y;

noolefunktsiooni abil.

Noolefunktsiooni süntaks

Noolefunktsiooni süntaks on järgmine:

 let myFunction = (arg1, arg2,… argN) => ( statement(s) )

Siin,

  • myFunction on funktsiooni nimi
  • arg1, arg2,… argN on funktsiooni argumendid
  • statement(s) on funktsioon keha

Kui kehal on üks lause või avaldis, saate noole funktsiooni kirjutada järgmiselt:

 let myFunction = (arg1, arg2,… argN) => expression

Näide 1: Noole funktsioon ilma argumendita

Kui funktsioon ei võta ühtegi argumenti, peaksite kasutama tühje sulgusid. Näiteks,

 let greet = () => console.log('Hello'); greet(); // Hello

Näide 2: Noole funktsioon ühe argumendiga

Kui funktsioonil on ainult üks argument, võite sulgud välja jätta. Näiteks,

 let greet = x => console.log(x); greet('Hello'); // Hello 

Näide 3: noole funktsioon avaldisena

Samuti saate funktsiooni dünaamiliselt luua ja kasutada avaldisena. Näiteks,

 let age = 5; let welcome = (age console.log('Baby') : () => console.log('Adult'); welcome(); // Baby

Näide 4: Mitmerealised noolefunktsioonid

Kui funktsiooni kehal on mitu lauset, peate need panema lokkis sulgudesse (). Näiteks,

 let sum = (a, b) => ( let result = a + b; return result; ) let result1 = sum(5,7); console.log(result1); // 12

seda noolefunktsiooniga

Tavalise funktsiooni sees viitab see märksõna funktsioonile, kus seda nimetatakse.

Kuid see thisei ole seotud noole funktsioonidega. Noolefunktsioonil pole oma this. Nii et kui helistate this, viitab see vanema ulatusele. Näiteks,

Tavapärase funktsiooni sees

 function Person() ( this.name = 'Jack', this.age = 25, this.sayName = function () ( // this is accessible console.log(this.age); function innerFunc() ( // this refers to the global object console.log(this.age); console.log(this); ) innerFunc(); ) ) let x = new Person(); x.sayName();

Väljund

 25 määratlemata aken ()

Siin on this.ageseespool this.sayName()juurdepääsetav, kuna see this.sayName()on objekti meetod.

See innerFunc()on siiski tavaline funktsioon ja sellele this.ageei pääse juurde, kuna see thisviitab globaalsele objektile (brauseri aknaobjekt). Seega this.agesees innerFunc()funktsioon annab undefined.

Noolefunktsiooni sees

 function Person() ( this.name = 'Jack', this.age = 25, this.sayName = function () ( console.log(this.age); let innerFunc = () => ( console.log(this.age); ) innerFunc(); ) ) const x = new Person(); x.sayName();

Väljund

 25 25

Siin innerFunc()määratletakse funktsioon noolefunktsiooni abil. Ja noolefunktsiooni sees thisviitab vanema ulatusele. Seega this.ageannab 25 .

Argumendid siduvad

Regulaarsete funktsioonide argumendid on siduvad. Sellepärast, kui edastate argumendid tavalisele funktsioonile, saate neile argumentsmärksõna abil juurde pääseda . Näiteks,

 let x = function () ( console.log(arguments); ) x(4,6,7); // Arguments (4, 6, 7)

Noolefunktsioonidel pole siduvaid argumente.

Kui proovite noolefunktsiooni abil argumendile juurde pääseda, annab see vea. Näiteks,

 let x = () => ( console.log(arguments); ) x(4,6,7); // ReferenceError: Can't find variable: arguments

Selle probleemi lahendamiseks võite kasutada levitamise süntaksit. Näiteks,

 let x = (… n) => ( console.log(n); ) x(4,6,7); // (4, 6, 7)

Noole funktsioon lubaduste ja tagasihelistamistega

Noolefunktsioonid pakuvad paremat süntaksi lubaduste ja tagasihelistuste kirjutamiseks. Näiteks,

 // ES5 asyncFunction().then(function() ( return asyncFunction1(); )).then(function() ( return asyncFunction2(); )).then(function() ( finish; ));

saab kirjutada järgmiselt

 // ES6 asyncFunction() .then(() => asyncFunction1()) .then(() => asyncFunction2()) .then(() => finish);

Asjad, mida peaksite noolefunktsioonide abil vältima

1. Objektide sees olevate meetodite loomiseks ei tohiks kasutada noole funktsioone.

 let person = ( name: 'Jack', age: 25, sayName: () => ( // this refers to the global… // console.log(this.age); ) ) person.sayName(); // undefined

2. Te ei saa konstruktorina kasutada noole funktsiooni . Näiteks,

 let Foo = () => (); let foo = new Foo(); // TypeError: Foo is not a constructor

Märkus : noole funktsioonid võeti kasutusele ES6-s . Mõni brauser ei pruugi noolefunktsioonide kasutamist toetada. Lisateabe saamiseks külastage JavaScripti noolefunktsiooni tugiteenust.

Huvitavad Artiklid...