⊗jsPmFTFENIn 233 of 505 menu

Funktsionaalavaldiste nüansid JavaScriptis

Nimetust Function Expression ei ole antud niisama. See tõesti tähendab seda - et sellised funktsioonid on osa mingist avaldisest.

Näiteks võime liita mingi stringi ja nimetuta funktsiooni:

let str = 'str' + function() {return 3;}; console.log(str); // väljastab 'strfunction() {return 3;}'

Miks me näeme sellist kummalist tulemust, mitte arvu 3? Sellepärast, et teine liidetav - see pole funktsiooni töö tulemus, vaid selle lähtekood (me ju ei kutsunud seda funktsiooni välja, vaid lihtsalt kirjutasime seda).

See tähendab, et nimetus funktsionaalavaldis tähistab seda, et selline funktsioon osaleb mingis avaldises.

Muutujale omistamine on samuti avaldis:

let func = function() { console.log('!'); };

Samuti võib näiteks edastada funktsiooni parameetrina console.log-ile ja see väljastab selle lähtekoodi konsooli - see loetakse samuti avaldiseks:

console.log(function() {return 3;});

Miks see on oluline: sest Function Declaration ja Function Expression erinevus ei seisne üldse selles, et esimene funktsioon luuakse nimega, aga teine algselt nime ei oma. See pole nii.

Näide. Siin on meil funktsioon ilma nimeta, kuid sellega ei osaleta üheski avaldises (see tähendab, et sellega ei tehta mingit tegevust, lihtsamalt öeldes):

/* See funktsioon on Function Declaration, kuid süntaksiveaga: */ function() { console.log('!'); }

Selline kood annab üldse vea! Miks: kuna funktsioon ei osale üheski avaldises, siis brauser peab seda Function Declaration-iks, kuid ei leia selle nime ja annab vea.

Et viga kaoks, tuleb muuta funktsioon mingi avaldise osaks. Näiteks kirjutame selle ette tehte +:

+function() { // selline kood on korrektne console.log('!'); };

Kuidas see töötab: tehe + ise ei tee midagi, see on sama, kui kirjutada arvu 3 asemel arv +3 - lubatud, kuid midagi ei muuda.

Kuid funktsiooni puhul - muudab. Nüüd on meie funktsioon juba mitte lihtsalt kirjutatud, vaid osaleb avaldises. Seetõttu ei teki viga. Funktsiooni täitmistulemust ka ei teki, sest me lihtsalt kirjutasime selle, kuid ei kutsunud välja.

+ asemel võib kirjutada mis tahes. Näiteks:

-function() { // selline kood on korrektne console.log('!'); }; !function() { // selline kood on korrektne console.log('!'); };

Samuti võib võtta meie funktsiooni ümarsulgudesse, sel juhul muutub see samuti funktsionaalavaldiseks:

(function() { // selline kood on korrektne console.log('!'); });

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

function func() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

let func = function() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

+function() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

!function func() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

-function func() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

1 + function func() { console.log('!'); }

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

(function func() { console.log('!'); })

Määrake, kas esitatud funktsioon on Function Declaration või Function Expression:

console.log( function() { console.log('!'); } );
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu