/ / Javascript: functie in functie. JS programmeertaal

JavaScript: functie in functie. JS programmeertaal

Ideeën voor het dynamisch genereren van inhoud op een webbron zijn de norm geworden. Statische pagina's en het bouwen van sjabloonsites hebben eindelijk hun missie voltooid.

Een moderne webresource hoeft echter niet te worden vertegenwoordigd door een reeks pagina's die zijn gegenereerd door de server en zijn bijgewerkt door de browser (JS + AJAX).

JavaScript-functie in functie

Een webbron op het moment dat een bezoeker arriveert, kan een aantal headers voor het protocol zijn, een beetje tekst in "head", een paar regels code in "body" en dat is alles. De rest is "denk aan»Tijdens het werk van de bezoeker - dit is een ideale site of probeert er één te worden.

Plaats van beschrijving en essentie van functies

JavaScript is ervaring opgedaan gedurende vele decennia. Het heeft een aanzienlijke ontwikkelingsgeschiedenis, een modern gekwalificeerd team van makers en ontwikkelaars. De taal is goed doordacht, betrouwbaar, mooi en biedt ontwikkelaars een echte kans om fatsoenlijke code te schrijven en zichzelf te verbeteren.

javascript-fout de bewerking is onveilig

Het concept van een algoritme buiten een functie ontbreekt hier inbeginsel. Natuurlijk kan de ontwikkelaar overal op de pagina een script invoegen, de code erin plaatsen en het wordt uitgevoerd. Maar wat is het nut van code die slechts één keer wordt uitgevoerd: on load (overload) Pagina's? Tenzij men de beginwaarden van enkele onbeduidende variabelen kan instellen.

Een script is een plek om de vereiste variabelen te beschrijven enfunctioneert in plaats van een aardig stukje code dat voor zijn eigen bestwil is geschreven. Het is de verzameling functies die essentieel en belangrijk is, misschien - hun onderlinge directe verbinding, maar vaker is alles anders. De plaats van de beschrijving van de functie en de plaats van toepassing zijn helemaal niet hetzelfde.

Het is helemaal niet nodig dat de functie zal zijndirect een andere functie aanroepen, het kan indirect worden gedaan door middel van dynamische codegeneratie. De bezoeker neemt een beslissing in het kader van deze code en er wordt een heel ander systeem van functies geactiveerd.

Functionele dynamiek

Functionele dynamiek gaat niet alleen overniet zozeer de handlers die aan de pagina-elementen zijn toegewezen, dit zijn functies die de pagina-elementen vormen, en de directe handlers kunnen ook veranderen.

javascript terug

De actie op de pagina ontvouwt zich afhankelijk van de elementen en het gedrag van de bezoeker erop. Muisbewegingen, toetsenbordknoppen, klikken, elementgebeurtenissen en andere omstandigheden activeren de gewenste functies.

Aanvankelijk is er geen volgorde ener is geen parallellisme. Er is een adequate reactie van de webbron op gebeurtenissen. Hoe snel JavaScript deze of gene functie zal uitvoeren, hangt af van veel technische (computer, communicatielijnen) en semantische (algoritmelogica, onderwerpgebied, betekenis van het probleem) factoren.

In feite kan worden gesteld dat iets werkte.parallel, en iets zal na iets worden vervuld, maar dit heeft geen bijzondere zin. Het is belangrijk dat JavaScript-functies het vermogen zijn om adequaat te reageren op de acties van een bezoeker.

Dit is een nieuwe manier van denken in ontwikkeling: gedistribueerde informatieverwerking in de diepten van een enkele browser!

Variabele en functiesyntaxis

JavaScript-variabelen worden geplaatst zoals in een tag"Script" en in de body van de functie. Functies worden op dezelfde manier gedefinieerd. Het heeft geen bijzondere zin om een ​​andere functie binnen de functie te schrijven, maar het kan om verschillende en gegronde redenen nodig zijn.

Een functiebeschrijving begint doorgaans met het sleutelwoord "functie" gevolgd door de naam, een door komma's gescheiden lijst met argumenten tussen haakjes en de hoofdtekst van de functie tussen accolades.

javascript pass functie om te functioneren

In dit voorbeeld worden twee functies beschreven die zorgen voor AJAX-communicatie tussen de pagina en de server. De variabele scXHR wordt hierboven beschreven en is dus zowel beschikbaar in InitXML als in WaitReplySC.

Functienaam en parameter "functie"

Een asynchrone optie werd hier gepresenteerd toenDe JavaScript-functie in de functie wordt aangeroepen nadat de server reageert. Tegelijkertijd, na een antwoord van de server te hebben ontvangen, verwijst WaitReplySC naar de paginatags, vult deze met de ontvangen informatie en roept andere functies op die mogelijk het volgende verzoek aan de server initiëren.

Het is ook belangrijk op te merken dat WaitReplySC een functie is. Maar in de rij scXHR.onreadystatechange = WaitReplySC het wordt doorgegeven als parameter. Dit is een algemene vuistregel voor het doorgeven van functies aan andere functies als parameters. Gespecificeerde haakjes en de bijbehorende parameter (s) doorgegeven - de functie wordt onmiddellijk uitgevoerd. Alleen de naam werd gegeven, dus wat? De functieaanroep wordt gedaan door degene die de naam heeft ontvangen.

Met AJAX-functionaliteit kunt u doen JavaScript-functieaanroep via gegevens ontvangen van de server. In feite, wanneer een verzoek naar de server wordt verzonden, kan het zijn dat deze of gene functie helemaal niet "weet" naar welke functie het verwijst en met welke informatie.

Functie-exit en resultaat

Alle operatoren kunnen in de hoofdtekst van de functie worden geschreventaal, die hier in feite voor bedoeld is. Binnen een functie zijn variabelen beschikbaar die binnen en buiten de functie worden beschreven, maar niet degene die in andere functies worden beschreven.

javascript functieaanroep

Als u wilt dat de functie terugkeertresultaat, kunt u de JavaScript-retouroperator gebruiken: return. Er kunnen voldoende retourinstructies in de hoofdtekst van de functie zijn. Het is helemaal niet nodig dat ze allemaal hetzelfde soort resultaat opleveren.

Meestal hebben ontwikkelaars veel respect voor deze functie en nemen ze, afhankelijk van de situatie, de beslissing om de functie zo snel mogelijk te verlaten.

Het is helemaal niet nodig om het hele functie-algoritme te doorlopen als u eerder kunt stoppen.

Functieargumenten

Argumenten worden via een lijst aan de functie doorgegevenkomma, staan ​​tussen haakjes en verschijnen onmiddellijk na de naam. Variabelenamen worden gebruikt als argumenten, maar waarden kunnen ook direct worden doorgegeven. Om een ​​functie door te geven aan een functie in JavaScript, hoeft u alleen de naam zonder haakjes op te geven.

javascript-variabelen

De variabele argumenten is beschikbaar binnen de functie, bezit hebben lengte. U kunt naar elk functieargument verwijzen via argumenten [0], argumenten [1], ... tot en met de laatste argumenten [arguments.length-1].

De verandering van functieargumenten zit echt van binnenfunctie, maar niet daarbuiten. Om iets buiten de functie te wijzigen, moet u de JavaScript-retouroperator gebruiken, waarmee u de vereiste waarde naar buiten doorgeeft.

Nadat de functie is voltooid, wordt alles datwerd geassocieerd met de uitvoering ervan, zal worden vernietigd. Tijdens de uitvoering kan een functie externe variabelen wijzigen, behalve die beschreven in andere functies, inclusief interne variabelen.

Argumenten heeft een eigenschap dieis bedoeld om een ​​functie aan te roepen die op een bepaald moment wordt uitgevoerd. Als u zichzelf aanroept, kunt u met de JavaScript-variant van de functie in de functie recursie implementeren.

Functies gebruiken

De belangrijkste zorg van functies is om evenementen te dienenbrowser. Om dit te doen, heeft bijna elke tag de mogelijkheid om de naam van de gebeurtenis en de functie die deze afhandelt te specificeren. Er kunnen meerdere gebeurtenissen worden opgegeven, maar er wordt slechts één functie per gebeurtenis opgegeven.

Een functie kan meerdere pagina-elementen en meerdere evenementen bedienen. Met behulp van de "this" -parameter kunt u de informatie doorgeven aan de functie van waaruit deze werd aangeroepen.

Klassiek gebruik van JS-functies -event handlers op elementen. In dit voorbeeld wordt de functie scfWecomeGo () of scfWelcomeCancel () aangeroepen in het aanmeldings- / uitlogformulier van de bezoeker, en wanneer de modus is geselecteerd, scfMenuItemClick (this).

javascript terug

In het laatste geval wordt de parameter "this" doorgegeven,waarmee je op wonderbaarlijke wijze kunt achterhalen van welke diva de oproep afkomstig is. Over het algemeen is JavaScript zo goed geïmplanteerd in de DOM en kunt u zo gemakkelijk door de elementen navigeren om de nodige informatie te verzamelen, dat de dynamiek van de pagina eenvoudigweg onvoorspelbaar kan zijn.

De functie hoeft geen string te retournerentekens, nummer of andere functie. Het kan een volwaardig HTML-element retourneren, waarin het vereiste aantal elementen aanwezig is, met zijn eigen gebeurtenishandlers.

Door een dergelijk element op de pagina te plaatsen, creëert de ontwikkelaar nieuwe functionaliteit, die goed is in termen van het oplossen van het probleem en tegemoetkomen aan de interesses van bezoekers, maar vrij moeilijk is in termen van implementatie.

Zo'n volledig functionele ontwikkeling starten,het is gemakkelijk om in de war te raken in uw eigen code, in functieaanroepen, op de momenten dat deze of gene inhoud van een of ander deel van de pagina wordt gevormd. Voordat we deze ontwikkelingsrichting inslaan, kan het geen kwaad om alles goed af te wegen.

Over gedistribueerd denken

De ontwikkelaar moet denken op het niveau van alle elementen van de pagina, op het niveau van alle evenementen en een duidelijk beeld hebben van hoe alles werkelijk gebeurt. Het is moeilijk, maar het is het waard.

javascript array-functies

In JavaScript kan functie-uitvoering zijnuitgesteld tot een bepaalde gebeurtenis, en er kunnen veel van dergelijke functies zijn, en gebeurtenissen hebben de neiging zich voort te planten en binnen het "bereik" van verschillende handlers te vallen.

javascript-fout de bewerking is onveilig

In dit voorbeeld ergens eerderde functie die de aanmaak van het bestandsnavigatiemenu-item heeft geactiveerd. De pagina-indeling wordt aangenomen, dat wil zeggen dat er slechts zeven bestanden in het venster zijn die kunnen worden verwijderd en verwerkt. U kunt navigeren door op een regel in het bestand te klikken, of door pijlen op het toetsenbord, of in blokken van zeven regels.

Elke case heeft zijn eigen functies. Met andere woorden, in zo'n eenvoudig voorbeeld moet u een paar dozijn functies schrijven die op verschillende gebeurtenissen reageren, en sommige van deze functies zullen verschillende opties en situaties behandelen die helemaal geen gebeurtenissen zijn.

javascript functie uitvoeren

Als u bijvoorbeeld een regel verwijdert, moet de onderkantomhoog gaan. Om dit te doen, moet u ofwel een nieuwe selectie maken, die banaal en arbeidsintensief is, of de regels opnieuw berekenen, array-functies in javascript gebruiken en het doel op elegante wijze bereiken.

Functieargumenten en resultaten

Met JavaScript kunt u uw code converteren naar"Volledig functionele" staat. Het is normaal als het functieargument een functie is. Een variant is toegestaan ​​als de functie een functie retourneert. JavaScript neemt dit vrij rustig op.

Dit is een goed mechanisme, maar vrij complex om te implementeren. Technisch gezien is alles toelaatbaar, semantisch gezien kan alleen een gekwalificeerde ontwikkelaar de logica leveren om het "functionele" over te dragen.

javascript pass functie om te functioneren

In JavaScript, een functie binnen een functie - waar u ook bentging, maar wanneer een functie een functie genereert, en die een andere, is het vrij moeilijk om de logica bij te houden. In feite gaat de vraag niet over het toepassen van kwalificaties, maar over het verkrijgen van een veilig en correct resultaat.

De zorg van de ontwikkelaar is duidelijk en eenvoudig. Er is een probleem, u heeft een oplossing nodig, geen fout zoals "JavaScript-fout de bewerking is onveilig", een leeg scherm of de hele browsermotor is gestopt.

Als het argument een functie is, dande ontwikkelaar geeft een variabele met speciale eigenschappen door, dat wil zeggen, het is geen getal, geen tekenreeks, geen object. Maar het gebruik van zo'n argument kan ertoe leiden dat externe variabelen zullen veranderen en het resultaat van de functie-uitvoering zal zijn. Afhankelijk van wat wordt overgedragen, zullen er passende wijzigingen zijn.

Uitvoering van de gegenereerde code

Implementeer de uitvoering van de code die is gegenereerd interwijl andere code wordt uitgevoerd, kunt u "eval" gebruiken. Dit wordt niet als een geweldige oplossing beschouwd, maar vaak kun je de code niet ingewikkeld maken met onnodige functies, maar beperk je jezelf tot de banale vorming van een regel JavaScript-code en voer je deze gewoon uit.

functie retourneert javascript-functie

In dit voorbeeld wordt een invoeglijn gevormd inhandelen div wat informatie. Het div-nummer en de informatie-inhoud zijn verschillend voor verschillende posities, daarom is een dergelijke oplossing in deze situatie gegarandeerd niet de situatie "javascript-fout de operatie is onveilig", maar zal op betrouwbare wijze het gewenste effect geven.

Het voorbeeld van de auteur is geen afbeelding

Een nuance van het function-in-function JavaScript-paradigma

Als er een mogelijkheid is om zonder franjes te doen, is het beter om deze te gebruiken. Al deze opties zijn goed. Dit is natuurlijk in veel gevallen de enige oplossing.

Een klassiek voorbeeld van recursie: het berekenen van de faculteit. Het is vrij moeilijk om een ​​algoritme te schrijven dat lussen maakt, maar het is heel gemakkelijk om de limieten van de waarde te overschrijden. De faculteit groeit te snel.

Zowel recursie als een functie die een andere functie aanroept die een geldige callback kan uitvoeren, zijn echter de norm.

Bijvoorbeeld een gewone tafel. Mogelijk staan ​​er nog andere tabellen in de tabel. Het nesten kan niet worden beperkt. Het schrijven van een aparte set functies voor elke tabel is een te grote luxe.

Er zijn veel van dergelijke voorbeelden, en allemaaldit zullen echte en urgente taken zijn, helemaal niet op het gebied van programmeren. Dat is de reden waarom het probleem precies ligt in het feit dat men niet zonder excessen kan, het gecreëerde systeem van functies, of liever de foutopsporing en de daaropvolgende betrouwbare werking, wordt niet de zorg van JavaScript, maar van de ontwikkelaar.

leuk vond:
0
Populaire berichten
Spirituele ontwikkeling
eten
Y