DatamaskinerProgrammering

JavaScript: Funksjon i funksjon. JS Programmeringsspråk

Ideer om dynamisk innholdsformasjon på webressurser ble normen. Statiske sider og malsteddesign har endelig fullført sitt oppdrag.

En moderne nettressurs trenger imidlertid ikke å være representert av et sett med sider som er dannet av serveren og oppdatert av nettleseren (JS + AJAX).

En webressurs ved ankomst av en besøkende kan være et par overskrifter for protokollen, litt tekst i "head", flere linjer med kode i "kroppen" og alt. Resten vil " finne ut " i prosessen med den besøkendes arbeid - dette er et ideelt sted eller strever etter å være en.

Plasseringsstedet og funksjonens essens

опыт, наработаный многими десятилетиями. JavaScript er en opplevelse som er oppnådd i mange tiår. Den har en betydelig utviklingshistorie, et moderne kvalifisert team av skapere-utviklere. Språket er gjennomtenkt, pålitelig, vakkert og gir den virkelige muligheten for utviklere å skrive anstendig kode og forbedre seg selv.

Konseptet med en algoritme utenfor funksjonen er i utgangspunktet fraværende. Selvfølgelig kan utvikleren sette inn et skript hvor som helst på siden, plasser koden i den og den blir utført. страницы? Men hva er poenget i koden som kjøres kun én gang: når du laster (laster opp) siden? Med mindre det er mulig å etablere innledende verdier av eventuelle ikke signifikante variabler.

Skriptet er stedet for beskrivelsen av de nødvendige variablene og funksjonene, i stedet for et godt stykke kode som er skrevet for egen skyld. Det er settet av funksjoner som er signifikant og signifikant, kanskje deres felles direkte forbindelse, men oftere er det annerledes. Stedet for funksjonsbeskrivelsen og stedet for søknaden er ikke det samme.

Det er ikke helt nødvendig at funksjonen vil kalle en annen funksjon direkte, det kan gjøres indirekte gjennom dynamisk kodegenerering. Den besøkende bestemmer seg innenfor rammen av denne koden, og et helt annet funksjonssystem fungerer.

Funksjonell dynamikk

Funksjonell dynamikk er ikke bare og ikke så mye håndterer som er tilordnet elementene på siden, disse er funksjonene som danner elementene på siden, og de direkte håndteringene kan også endres.

Handlingen på siden utfolder seg avhengig av elementene og oppførselen til den besøkende. Musbevegelser, tastaturknapper, klikk, elementhendelser og andre forhold fører til lanseringen av de nødvendige funksjonene.

I utgangspunktet er det ingen konsistens og det er ingen parallell. Det er en tilstrekkelig reaksjon av webressursen til hendelser. Hvor raskt JavaScript vil oppfylle denne eller den funksjonen, avhenger av mange tekniske (datamaskin, kommunikasjonslinjer) og semantiske (logikk av algoritmen, emneområdet, betydningen av problemet).

Faktisk kan det hevdes at noe fungerte parallelt, og noe vil skje etter noe, men det er ikke noe poeng i det. Det er viktig at JavaScript-funksjonen er evnen til å skape et tilstrekkelig svar på besøkende handlinger.

Denne nye tenkningen i utvikling: distribuert behandling av informasjon i tarmene til en enkelt nettleser!

Syntaks av variabler og funksjoner

JavaScript-variabler er plassert både i "skript" -taggen og i funksjonens kropp. Funksjonene er definert på samme måte. Det er ingen spesiell betydning for å skrive inn i funksjonen, men dette kan være nødvendig for ulike og grundige grunner.

Funksjonsbeskrivelsen begynner vanligvis med søkeordet "funksjon", etterfulgt av navnet, en liste over argumenter i parentes adskilt av et komma, og funksjonslegemet i krøllede parenteser.

Dette eksemplet beskriver to funksjoner som gir AJAX-utveksling mellom en side og en server. Den variable scXHR er beskrevet ovenfor, derfor er den tilgjengelig både i InitXML og inne WaitReplySC.

Funksjonsnavn og funksjonsparameter

En asynkron variant ble presentert her, når JavaScript-funksjonen i funksjonen kalles etter serverresponsen. I dette tilfellet, etter å ha mottatt et svar fra serveren, åpner WaitReplySC sidetiketter, fyller dem med mottatt informasjon og ringer til andre funksjoner som kan utløse den neste forespørselen til serveren.

Her er det også viktig å merke seg at WaitReplySC er en funksjon. scXHR.onreadystatechange = WaitReplySC она передается как параметр. Men i scXHR.onreadystatechange = WaitReplySC-linjen, blir den passert som en parameter. Dette er en generell regel for å overføre funksjoner til andre funksjoner som parametere. Han spesifiserte parentesene og passerte parameteren (parametere) til dem - funksjonen vil bli utført umiddelbart. Jeg ga bare navnet, så hva? Funksjonen kalles av den som mottok navnet.

Funksjonaliteten implementert via AJAX lar deg ringe JavaScript-funksjonen via data mottatt fra serveren. Faktisk, ved å sende en forespørsel til serveren, kan denne eller den aktuelle funksjonen ikke engang "vite" hvilken funksjon den har tilgang til og med hvilken informasjon.

Avslutt funksjonen og resultatet

I funksjonens kropp kan du skrive noen språkoperatører, som faktisk er ment for dette. Innenfor funksjonen er variabler tilgjengelige som er beskrevet internt og eksternt, men ikke de som er beskrevet i andre funksjoner.

Hvis du vil at funksjonen skal returnere resultatet, kan du bruke retur-JavaScript-operatøren: returnere. Det kan være tilstrekkelig antall returmeldinger i funksjonens kropp. Det er ikke nødvendig at de alle returnerer resultatet av samme type.

Vanligvis respekterer utviklerne denne muligheten og, avhengig av situasjonen, tar en beslutning om å forlate funksjonen så snart det blir mulig.

Det er ikke nødvendig å løpe gjennom hele algoritmen til funksjonen, når du kan gå ut tidligere.

Funksjonsargumenter

Argumenter i en funksjon blir sendt av en kommaseparert liste, vedlagt i parentes, og umiddelbart etter navnet. Variabler brukes som argumenter, men verdier kan også sendes direkte. For at JavaScript skal kunne sende en funksjon til en funksjon, trenger du bare å spesifisere navnet sitt uten parentes.

En variabel argument er tilgjengelig inne i funksjonen, som har lengdeegenskapen. Du kan få tilgang til et funksjonsargument via argumenter [0], argumenter [1], ... til de siste argumentene [arguments.length-1].

Endring av funksjonsargumentet er virkelig inne i funksjonen, men ikke utenfor det. For å endre noe utenfor funksjonen, må du bruke JavaScript-returoperatøren, gjennom hvilken å sende den nødvendige verdien utover.

Etter at funksjonen er fullført, vil alt som er knyttet til utførelsen bli ødelagt. Ved kjøring kan funksjonen endre eksterne variabler, unntatt de som er beskrevet i andre funksjoner, inkludert interne.

Argumenter har en callee-egenskap som er ment å kalle en funksjon som for tiden utføres. Hvis du ringer deg selv, vil JavaScript-funksjonen i funksjonen tillate deg å implementere rekursjon.

Bruke funksjoner

Hovedårsaken til funksjonene er å betjene nettleser hendelsene. For å gjøre dette, i nesten alle tagger, er det mulig å spesifisere navnet på arrangementet og funksjonen som behandler den. Du kan spesifisere flere hendelser, men bare en funksjon er spesifisert for hver hendelse.

En funksjon kan betjene flere sider og flere hendelser. Med parameteren "denne" kan du sende informasjon til funksjonen, hvor den ble kalt.

Den klassiske bruken av JS-funksjoner er hendelsesbehandlere på elementer. I dette eksemplet blir funksjonen scfWecomeGo () eller scfWelcomeCancel () kalt i besøksoppførings- / utgangsskjemaet, og når scfMenuItemClick (this) er valgt.

I sistnevnte tilfelle overføres parameteren "this", som lar deg mirakuløst finne ut hvilken diva samtalen stammer fra. Generelt er JavaScript så godt implantert i DOM, og det lar deg navigere gjennom elementene så enkelt, samle inn den nødvendige informasjonen, slik at dynamikken til siden kan være ganske enkelt uforutsigbar.

Funksjonen trenger ikke å returnere en streng med tegn, et tall eller en annen funksjon. Det kan returnere et fullstendig HTML-element, og der vil være et nødvendig antall elementer, med egne hendelseshåndterere.

Ved å plassere et slikt element på siden, skaper utvikleren ny funksjonalitet, noe som er bra når det gjelder å løse problemet og tilfredsstille interessene til besøkende, men det er ganske vanskelig når det gjelder implementering.

Når du starter en slik fullverdig utvikling, er det lett å bli forvirret i din egen kode, i funksjonsanrop, i øyeblikkene når dette eller det innholdet i denne eller den delen av siden er dannet. Før du tar en slik utviklingsretning, gjør det ikke vondt for å veie alt godt.

Om distribuert tenkning

Utvikleren må tenke på nivået av alle elementene på siden, på nivået av alle hendelser og ha en klar ide om hvordan det egentlig er. Det er komplisert, men dette arbeidet er verdt det.

I JavaScript kan en funksjon bli utsatt for en hendelse, og det kan være mange slike funksjoner, og hendelsene har egenskapen til å formere seg og falle inn i "omfanget" av de ulike håndtererne.

I dette eksemplet, et sted tidligere, ble det kalt en funksjon som startet opprettelsen av et filnavigasjonsmenyelement. En personsøkerorganisasjon antas, det vil si at det bare er syv filer i vinduet som kan slettes og behandles. Du kan flytte både ved å klikke på linjen i filen, og med piler på tastaturet, og av blokker med syv linjer.

I hvert tilfelle er det funksjoner. Med andre ord, i et så enkelt eksempel, må du skrive et par dusinvis av funksjoner som vil reagere på ulike hendelser, og noen av disse funksjonene vil håndtere ulike varianter og situasjoner som ikke gjelder for hendelser i det hele tatt.

Hvis du for eksempel sletter en linje, bør de nederste linjene gå oppover. For å gjøre dette, må du enten lage et nytt utvalg, som er trivielt og kapasitet i ressurser, eller omberegne linjer, bruke javascript-arrayfunksjoner og elegant å nå målet.

Argumenter og funksjonsresultater

JavaScript lar deg bringe koden til en "fullverdig" tilstand. Normalt, når argumentet til en funksjon er en funksjon. Et alternativ er mulig når funksjonen returnerer en funksjon. JavaScript behandler dette ganske rolig.

Dette er en god mekanisme, men det er ganske komplisert med hensyn til implementering. Teknisk er alt tillatt, semantisk gir logikken for overføring av "funksjonell" bare av en kvalifisert utvikler.

Når i JavaScript-funksjon i funksjon - hvor som helst, men når funksjonen genererer en funksjon, og den ene, så er det ganske vanskelig å holde rede på logikken. Faktisk er spørsmålet ikke om å søke kvalifikasjonen, spørsmålet er å få et trygt og korrekt resultat.

Pleieutvikleren er klar og enkel. Det er en oppgave, du trenger en løsning, ikke en feil som "JavaScript-feil operasjonen er usikker", en ren skjerm eller stopper hele nettlesermotoren.

Hvis argumentet er en funksjon, overfører utvikleren en variabel med spesielle egenskaper, det vil si at det ikke er et tall, ikke en streng, ikke et objekt. Men bruken av et slikt argument kan føre til det faktum at eksterne variabler vil endres, og resultatet av utførelsen av funksjonen vil være. Avhengig av hva som er bestått, vil det være tilstrekkelige endringer.

Gjennomføring av generert kode

Implementere utførelsen av kode generert under drift av en annen kode, du kan bruke "eval". Dette anses ikke som en utmerket løsning, men det er ofte mulig å ikke komplisere koden med overflødige funksjoner, men å begrense oss til den banale generasjonen av en JavaScript-kode streng og bare utføre den.

I dette eksemplet settes en innsatslinje inn i skuespillets divisjoner av noe informasjon. Diva nummeret og innholdet i informasjonen er forskjellige for forskjellige stillinger, fordi en slik beslutning i denne situasjonen ikke er garantert å sikre situasjonen "javascript feil operasjonen er usikker", men det vil på en pålitelig måte gi den ønskede effekten.

Nuance av JavaScript-paradigmet "funksjon i funksjon"

Hvis det er en mulighet til å gjøre uten overskudd, er det bedre å bruke det. Alle oppførte alternativer er gode. Selvfølgelig er dette i mange tilfeller den eneste løsningen.

Et klassisk eksempel på rekursjon: Faktorisk beregning. Her er det vanskelig nok å skrive en algoritme som sitter fast, men det er veldig enkelt å gå utover grensene for mening. Faktoriet vokser for fort.

Men både rekursjon og en funksjon som kaller en annen funksjon som kan gjøre en rimelig tilbakeringing er normen for ting.

For eksempel, et vanlig bord. Det kan være andre bord i bordet. Nesting kan ikke begrenses. Å skrive for hver tabell er sitt eget sett med funksjoner for stor en luksus.

Det er mange slike eksempler, og alt dette vil være virkelige og presserende oppgaver, ikke i det hele tatt fra programmeringsområdet. Det er derfor problemet er nettopp at du ikke kan gjøre det uten overskudd, det opprettede funksjonssystemet, mer nøyaktig blir debugging og påfølgende pålitelig arbeid en bekymring, ikke for JavaScript, men for utvikleren.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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