KompjûtersProgramming

JavaScript: funksje yn funksje. JS Programming Taal

Ideeën fan dynamyske ynhâldfoarming op web-boarnen waarden de norm. Static siden en sjabloanûntwerp ûntwerp hawwe harren missy úteinlik foltôge.

In moderne webboarne moat lykwols net fertsjintwurdige wurde troch in set fan siden, generearre troch de tsjinner en bywurke troch de browser (JS + AJAX).

In webside op it momint fan 'e oankomst fan in besiker kin in pear hoofderners wêze foar it protokol, in tekst yn' e "kop", ferskate rigels fan koade yn it "lichem" en alles. De rest fan "tinke" yn it proses fan de besiker - it is in ideale site, of aspirant te wêzen ien.

It plak fan beskriuwing en it essinsje fan funksjes

опыт, наработаный многими десятилетиями. JavaSkript - it is in ûnderfining narabotany desennia. It hat in wichtige ûntwikkelingskiednis, in moderne kwalifisearre team fan skeppers-ûntwikkelers. De taal is goed gedachte, betrouber, moai en jout de echte mooglikheid foar ûntwikkelers om decentlike koade te skriuwen en har te ferbetterjen.

It begryp fan in algoritme bûten de funksje is yn prinsipe net fûn. Fansels kin de ûntwikkeler in oar plak yn 'e side in skript ynstelle, pleatst de koade yn it en sil útfiert wurde. страницы? Mar wat is de punt yn 'e koade, dy't útfierd wurdt mar ien kear: doe't laden (te ferfarskjen) de side? As it net mooglik is om begjinwearden fan elke net wichtige fariabelen te fêstigjen.

It skript is it plak fan 'e beskriuwing fan' e needsaaklike fariabelen en funksjes, yn stee fan in goede stikje koade skreaun foar eigenwillich. It is de opsjes fan funksjes dy't wichtich en belangryk binne, miskien har beide direkte ferbining, mar faak it is oars. It plak fan 'e funksje-beskriuwing en it plak fan syn tapassing is net itselde.

It is net folslein needsaaklik dat de funksje direkt in oare funksje ropt, it kin indirekt dien wurde fia dynamyske koade-generaasje. De besiker makket in beslút yn it ramt fan dizze koade en in folslein oare funksjesysteem wurket.

Funksje dynamyk

Funksjonele dynamyk is net allinich en net safolle de oanhinger oan 'e eleminten fan' e side, dy binne de funksjes dy't de eleminten fan 'e side foarmje, en de direkte oanhinger kinne ek wizigje.

De aksje op 'e side ûntwikkelet ôfhinklik fan syn eleminten en it gedrach fan de besiker op har. Mausbewegingen, toetseboerdknoppen, klikken, elemint eveneminten en oare omstannichheden liede ta de start fan de fereaske funksjes.

Yn it earstoan is der gjin konsistinsje en der is gjin parallel. Der is in adekwate reaksje fan 'e web-boarne oan eveneminten. Hoewol snelle JavaScript dit of dizze funksje foldocht, hinget ôf fan in soad technysk (kompjûter, kommunikaasjegroepen) en semantyske (logika fan it algoritme, ûnderwerpgebiet, betsjutting fan 'e problemen) faktoaren.

Yn feite kin it argumentearje dat dat wat parallele wurke, en wat sil nei ien ding komme, mar der is gjin punt yn dat. It is belangryk dat de JavaScript-funksje de mooglikheid hat om in adekwaat antwurd te meitsjen foar visitor aksjes.

Dit nije tinken yn ûntwikkeling: ferparte ferwurking fan ynformaasje yn 'e ynteresses fan in single browser!

Syntaksis fan fariabelen en funksjes

JavaScript-fariabelen wurde sawol yn 'e "skript" tag pleatst en yn it lichem fan' e funksje. De funksjes binne op deselde wize definiearre. Der is gjin spesjale betsjutting foar it skriuwen yn 'e funksje, mar dit kin needsaaklik wêze foar ferskate en goed grûnde redenen.

De funksje fan 'e funksje begjint mei-inoar de keyword "funksje", folge troch syn namme, in list fan arguminten yn kloften, skieden troch in komma, en it funksjele lichem yn curly brackets.

Dit foarbyld beskriuwt twa funksjes dy't AJAX ferwiderje tusken in side en in server. De fariabele scXHR wurdt boppe beskreaun, dus is it beskikber yn both InitXML en yn WaitReplySC.

Funksje namme en funksjeparameter

In asynchrone fariant waard hjir presintearre, as de JavaScriptfunksje yn 'e funksje neamd wurdt nei de tsjinner antwurd. Yn dit gefal hat WaitReplySC in reaksje fan 'e tsjinner krigen, tagelyk tagongstikken, folslein mei ynformaasje dy't ûntfongen binne en oare funksjes oproppe dy't de folgjende fraach nei de server úthâlde kinne.

Hjir is ek wichtich om te notearjen dat WaitReplySC in funksje is. scXHR.onreadystatechange = WaitReplySC она передается как параметр. Mar yn line scXHR.onreadystatechange = WaitReplySC wurdt it trochjûn as in parameter. Dit is in algemien regel foar passende funksjes nei oare funksjes as parameters. Hy spesifisearre de liederjes en passe de parameter (parameter) oan har - de funksje sil fuortdaliks útfierd wurde. Ik joech allinich de namme, dus wat? De oprop fan 'e funksje sil makke wurde troch de ien dy't syn namme krige.

De funksjonaliteit ymplemintearre fia AJAX, kinne jo belje in JavaSkript funksje troch de gegevens ûntfongen fan de tsjinner. In feiligens, troch in fersyk nei de tsjinner te stjoeren, dizze of dat funksje kin sels net "witte" wat funksjonearret it tagong en mei hokker ynformaasje.

Utfiere de funksje en syn resultaat

Yn it lichem fan 'e funksje kinne jo in taaloperator skriuwe, dy't feitlik foar dit bedoeld is. Binnen de funksje binne fariabelen beskikber dy't yntern en ekstreem beskreaun wurde, mar net dy yn oare funksjes beskreaun.

As jo de funksje wolle om it resultaat werom te heljen, kinne jo de rjochter JavaScript-brûker brûke: werom. Der kin in foldwaande oantal weromkomst yn it lichem fan 'e funksje wêze. It is net nedich dat se allegear it resultaat fan deselde type weromkomme.

Meastal rjochtsje de ûntwikkelders dizze mooglikheid en, ôfhinklik fan 'e situaasje, in beslút oer it ferlofjen fan de funksje sa gau as it mooglik is.

It is net nedich om troch de folsleine algoritme fan 'e funksje te rinnen, as jo earder útskeakelje kinne.

Funksje Arguminten

Arguminten yn in funksje wurde troch in komma-skieden list passearre, ynklokten yn klonkjes en fuortendaliks nei syn namme. Variaasjes wurde as arguminten brûkt, mar wearden kinne ek direkt trochjûn wurde. Om jo JavaSkript in funksje fan in funksje oer te setten, moatte jo gewoan syn namme sûnder klokken oantsjutte.

Binnen de funksje is beskikber fariabele arguminten, dat hat in lingte eigendom. Jo kinne tagong krije ta in funksjesargumint oer arguminten [0], arguminten [1], ... oant de lêste arguminten [arguments.length-1].

It feroarjen fan it function argument is echt yn 'e funksje, mar net bûten it. Om wat foar bûten de funksje te feroarjen moatte jo de JavaScript-herstelloperator brûke, wêrmei jo de nedige wearde nei bûten passe.

Nei't de funksje foltôge is, allegear dy't ferbûn is mei syn útfiering wurde ferwoaste. Op de runtime kin de funksje eksterne fariabelen wizigje, útsein dyjingen dy't beskreaun binne yn oare funksjes, ynklusyf ynternes.

Arguminten hawwe in kalfe-eigenskip dy't bedoeld is om in funksje op te nimmen dy't op it stuit aktyf is. As jo dysels neame, dan kin de JavaScript-funksje-opsje yn 'e funksje litte jo ta rekkening ynstelle.

Fonkjes brûke

De belangrykste soarch fan 'e funksjes is om de eventueres fan' e browser te tsjinjen. Om dit te dwaan, yn hast alle tag is it mooglik om de namme fan it barren op te jaan en de funksje dy't it ferwurket. Jo kinne ferskate eveneminten opjaan, mar allinich ien funksje wurdt oanjûn foar elke event.

Ien funksje kin meardere side-eleminten en ferskate eveneminten brûke. Mei de "dizze" parameter kinne jo ynformaasje jaan oer de funksje, fan wêr't it oproppen is.

It klassike gebrûk fan JS-funksjes is eventuele handlers op eleminten. Yn dit foarbyld sil de funksje scfWecomeGo () of scfWelcomeCancel () opnomd wurde yn de visitor ynfier / útgeand formulier, en wannear scfMenuItemClick (dit) selektearre is.

Yn it lêste gefal wurdt de parameter "dit" trochjûn, wêrtroch jo wûnderlik útfine wêr't diva de oprop ûntfong. Yn it algemien wurdt JavaScript sa goed ynset yn DOM en it jout jo troch syn eleminten sa maklik te navigearjen, de nedige ynformaasje te sammeljen, sadat de dynamyk fan 'e side gewoan ûnfoarberber wêze kin.

De funksje hat net nedich om in tekenrige of tekens, in getal of in oare funksje werom te heljen. It kin in folsleine HTML-elemint weromjaan, en yn wêryn in fereaske tal eleminten wêze sil, mei eigen eveneminten.

Troch it opstellen fan sa'n elemint op 'e side, skept de ûntwikkeler nije funksjonaliteit, wat goed is yn it ferwêzentlikjen fan it probleem en befetsje de belangen fan besikers, mar it is hiel heulend yn termyn fan útfiering.

Begjin fan sa'n folsleine útwreidingsûntwikkeling is it maklik te ferwûnderjen yn jo eigen koade, yn funksjele opsjes, yn 'e mominten as dit of dizze ynhâld fan dit of dat diel fan' e side foarme is. Foardat sa'n rjochting fan ûntwikkeling nommen wurdt, draait it net om alles goed te waaien.

Oer ferwurde tinken

De ûntwikkelder moat tinke oan it nivo fan alle eleminten fan 'e side, op it nivo fan alle eveneminten en hawwe in dúdlik idee fan hoe dingen binne. It is komplisearre, mar dit wurk is wurdich.

Yn JavaSkript kin in funksje opjûn wurde oan in evenemint, en der kin in protte soksoarte funksjes wêze, en de eveneminten hawwe it eigendom te ferbrekken en te falle yn 'e' berik fan 'e ferskate hannelers.

Yn dit foarbyld, earne earder, waard in funksje neamd dat de ûntjouwing fan in bestânnavigaasje-menu item ynstie. In pagingorganisaasje wurdt oannommen, dat is allinich sân triemmen yn it finster dat litte en ferwurke wurde kinne. Jo kinne beide bewegen troch te klikken op 'e rigel fan' e bestân, en troch pylken op it toetseboerd, en troch blokken fan sân rigels.

Yn elke gefal binne der funksjes. Mei oare wurden, yn sa'n ienfâldige foarbyld moatte jo in pear tsientallen funksjes skriuwe dy't op ferskate eveneminten reagearje, en guon fan dizze funksjes sille ferskate opsjes en situaasjes behannele wurde dy't net tapast wurde foar eveneminten.

As jo bygelyks in rigel wiskje, moatte de bottomlinen omheech gean. Om dit te meitsjen, sille jo in nije seleksje meitsje, wat trivial en kapuze yn middels is, of linen opnij meitsje, brûke javascript-arrayfunksjes en elegant it doel te berikken.

Arguminten en funksjes

JavaScript jout jo de koade nei in "folsleine" standert te bringen. Normaal as it argumint fan in funksje in funksje is. In opsje is mooglik as de funksje in funksje jout. JavaScript jout dit frij rêstich.

Dit is in goede meganisme, mar it is hiel kompleks yn ferbân mei de ymplemintaasje. Technysk is alles tagelyk, semantysk leverje de logika foar it oerdragen fan "funksjonele" allinich troch in kwalifisearre ûntwikkelder.

As jo yn funksje funksjonearje yn 'e funksje - wêr't it gie, mar as de funksje in funksje generearret, en dat ien mear is, dan is it in soad dreech om de logika te folgjen. Yn 't feit is de fraach net oft de kwalifikaasje tapast, de fraach is om in feilich en korrekt te krijen.

Soarchûntwikkeler is dúdlik en ienfâldich. Der is in taak, jo moatte in oplossing nedich hawwe, net in brek as "JavaSkript flater de operaasje is ûnfeilich", in skjin skerm of it stopjen fan de folsleine browser-motor.

As it argumint in funksje is, dan giet de ûntwerper in fariant mei spesjale eigenskippen, dat is gjin nûmer, gjin string, gjin objekt. Mar it brûken fan sa'n argumint kin liede ta it feit dat eksterlike fariabelen feroarje en it resultaat fan 'e útfiering fan' e funksje sil wêze. Ofhinklik fan wat passe is, sille adekwate feroaringen wêze.

Utfiering fan generearre koade

Fiere de útfiering fan koade yn 'e operaasje fan in oare koade, kinne jo "eval" brûke. Dit is net in goede oplossing beskôge, mar it kin faaks net mooglik wêze om de koade mei redundante funksjes te kompletearjen, mar jo kinne jo beheine oan de banale generaasje fan in JavaScript-koade-string en makket it ienfâldich út.

Yn dit foarbyld is in ynsetline ynfierd yn de aktive divs fan wat ynformaasje. It diva-nûmer en de ynhâld fan 'e ynformaasje binne ferskillend foar ferskate posysjes, om't sa'n beslút yn dizze situaasje net garandearre is om de situaasje te garandearjen "javascript error" is de operaasje ûnfeilich, mar it sil fertsjinwurdige wurde oan de winske effekt.

Nuance fan it JavaScript-paradigm "funksje yn funksje"

As der in mooglikheid is te meitsjen sûnder eksessen, is it better om it te brûken. Alle opsleine opsjes binne goed. Fansels is dit yn 'e heule gefallen dit ienige oplossing.

In klassike foarbyld fan rekreaasje: faktoraal berekkening. Hjir is it dreech genôch om in algoritme te skriuwen dy't stekt, mar it is hiel maklik om de betsjutting fan betsjutting te gean. De facto fergruttet te snel.

Wol binne beide rekurzjes en in funksje dy't in oare funksje neamt, dy't in lege weromkomst meitsje kinne is de norm fan 'e dingen.

Bygelyks in reguliere tafel. Der kinne oare tabellen yn 't tafel wêze. Nêst kin net beheind wêze. Om elke tafel te skriuwen is in eigen funksjesfunksje te grut in lúkse.

Der binne in protte soksoarte foarbylden, en allegear sil echte en driuwende taken wêze, net hielendal út it fjild fan programmearring. Dêrom is it probleem krekt dat jo kinne sûnder de eksessen, it ûntsteane systeem fan funksjes, krekt krekt syn debuggen, en folgjende betroubere wurken, in besorging net fan JavaSkript, mar fan 'e ûntwikkelders.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 fy.birmiss.com. Theme powered by WordPress.