/ / JavaScript: veikia funkcija. JS programavimo kalba

JavaScript: veikia funkcija. JS programavimo kalba

Normos tapo dinamiško turinio formavimo idėjos žiniatinklyje. Statiniai puslapiai ir šablonų svetainių kūrimas pagaliau baigė savo misiją.

Tačiau šiuolaikiniam interneto šaltiniui nereikia atstovauti serverių sugeneruoto ir atnaujinto naršyklės (JS + AJAX) puslapių rinkinys.

javascript funkcija

Web-based saugykloje ties lankytojo atvykus šiuo metu gali būti pavadinimų pora Apmaudu, kad kai kurie į «galvos» tekstas, keletas eilučių kodą «Kūnas» ir visi. Kita «sugalvoti raktą"Lankytojo darbo procesas yra ideali vieta ar siekis būti tokia.

Apibūdinimo vieta ir funkcijų esmė

JavaScript yra patirtis, įgyta per daugelį dešimtmečių. Jis turi didelę raidos istoriją, modernią kvalifikuotą kūrėjų kūrėjų komandą. Kalba gerai apgalvota, patikima, graži ir suteikia kūrėjams realios galimybės parašyti tinkamą kodą ir patobulinti save.

javascript klaida operacija yra nesaugi

Čia nėra algoritmo sąvokos už funkcijos ribųprincipas. Žinoma, kūrėjas gali įterpti scenarijų bet kurioje puslapio vietoje, į jį įdėkite kodą ir jis bus įvykdytas. Bet koks yra kodo taškas, kuris vykdomas tik vieną kartą: kai pakrovimas (perkrovimas) puslapis? Išskyrus atvejus, kai neįmanoma nustatyti bet kokių nereikšmingų kintamųjų pradinių verčių.

Skriptas yra vieta, kur aprašyti reikiamus kintamuosius irfunkcijos, o ne gera kodo dalis, sukurta dėl jos pačių. Tai yra reikšmingų ir reikšmingų funkcijų rinkinys, galbūt jų tiesioginis ryšys, bet dažniausiai jis skiriasi. Funkcijos aprašymo vieta ir jos taikymo vieta nėra vienodi.

Tai nėra absoliučiai būtina, kad funkcija busTiesiogiai iškviesti kitą funkciją, tai gali būti daroma netiesiogiai naudojant dinaminį kodo generavimą. Lankytojas priima sprendimą pagal šį kodą, o visiškai kitokia funkcijų sistema veikia.

Funkcinė dinamika

Funkcinė dinamika yra ne tikne tiek puslapio elementams priskirti tvarkytojai, bet ir tos funkcijos, kurios sudaro puslapio elementus, o tiesioginiai tvarkytojai taip pat gali keistis.

javascript grįžti

Veiksmas puslapyje atskleidžiamas pagal jo elementus ir lankytojo elgesį. Pelės judesiai, klaviatūros mygtukai, paspaudimai, elementų įvykiai ir kitos aplinkybės lemia būtinų funkcijų paleidimą.

Iš pradžių nėra nuoseklumo irnėra lygiagretumo. Tinkamas žiniatinklio išteklių atsakas į įvykius yra tinkamas. Kaip greitai JavaScript atitiks tą ar tą funkciją, priklauso nuo daugelio techninių (kompiuterinių, ryšio linijų) ir semantinių (algoritmo logikos, dalyko srities, problemos reikšmės) veiksnių.

Iš tikrųjų galima teigti, kad kažkas dirbolygiagrečiai, ir kažkas atsitiks po kažko, bet tai nėra prasmės. Svarbu, kad "JavaScript" funkcijos yra galimybė kurti tinkamą atsakymą į lankytojų veiksmus.

Šis naujas vystymosi mąstymas: paskirstytas informacijos apdorojimas vienos naršyklės žarnyne!

Kintamųjų ir funkcijų sintaksė

"JavaScript" kintamieji pateikiami kaip žyma"Script" ir funkcijos kūnas. Funkcijos apibrėžiamos vienodai. Funkcijai rašyti nėra jokios specialios reikšmės, tačiau tai gali prireikti dėl įvairių priežasčių.

Funkcijos aprašymas paprastai prasideda raktiniu žodžiu "funkcija", po jo pavadinimu, argumentų skliausteliuose, atskirtu kableliais, ir funkcinio kūno garbanotose skliaustuose.

javascript, norint perkelti funkciją į funkciją

Šiame pavyzdyje aprašomos dvi funkcijos, užtikrinančios AJAX keitimą tarp puslapio ir serverio. Kintamasis scXHR aprašytas aukščiau, todėl jis gali būti tiek InitXML, tiek WaitReplySC viduje.

Funkcijos pavadinimas ir funkcijos parametras

Čia pristatytas asinchroninis variantas, kaiFunkcija "JavaScript" funkcija yra vadinama po serverio atsakymo. Tuo pačiu metu, gavus atsakymą iš serverio, "WaitReplySC" pasiekia puslapio žymes, užpildo juos gauta informacija ir skleidžia kitas funkcijas, kurios gali sukelti kitą prašymą prie serverio.

Taip pat svarbu atkreipti dėmesį į tai, kad WaitReplySC yra funkcija. Bet eilėje scXHR.onreadystatechange = WaitReplySC tai yra perduota kaip parametras. Tai yra bendra taisyklė, kad funkcijos perduodamos į kitas funkcijas kaip parametrai. Aš nurodžiau skliaustus ir perdaviau jiems parametrą (parametrus) - funkcija bus įvykdyta iš karto. Jis perdavė tik vardą, taigi su tuo. Funkcijos skambutį atliks tas, kuris gavo jo vardą.

AJAX funkcionalumas leidžia jums atlikti skambinkite javascript funkcija per duomenis, gautus iš serverio. Iš tikrųjų, siunčiant užklausą serveriui, viena ar kita funkcija gali išvis "nežinoti", kokia funkcija ji pasiekia ir kokia informacija.

Išeiti iš funkcijos ir jos rezultatas

Galite rašyti bet kokius operatorius funkcijos kūne.kalba, kuri šiuo tikslu yra skirta. Funkcijoje esančios ir už jos ribotos kintamosios funkcijos yra funkcijos viduje, bet ne tos, kurios aprašytos kitose funkcijose.

javascript funkcijos skambutį

Jei norite, kad funkcija grįžtųrezultatas, galite naudoti JavaScript grąžinimo operatorių: grįžti. Funkcijos kūne gali būti pakankamas skaičius grąžinimo teiginių. Visiškai nereikia grąžinti to paties tipo rezultatų.

Paprastai kūrėjai labai gerbia šią galimybę ir, priklausomai nuo situacijos, priima sprendimą išeiti iš funkcijos, kai tik tai įmanoma.

Negalima paleisti viso algoritmo funkcijos, kai jūs galite išeiti anksčiau.

Funkcijos argumentai

Argumentai funkcijai perduodami per sąrašąkablelis, uždėtas skliaustuose ir iškart po jo pavadinimo. Kintamieji vardai naudojami kaip argumentai, bet jūs taip pat galite tiesiogiai perduoti vertes. Norėdami perduoti funkciją "JavaScript" funkcijai, tiesiog įveskite jos pavadinimą be skliaustų.

javascript kintamieji

Funkcijos viduje yra kintamųjų kintamasis, turintys turtą ilgis Galite nurodyti bet kurį funkcijos argumentą argumentais [0], argumentais [1], ... iki paskutinių argumentų [arguments.length-1].

Funkcijos argumento pakeitimas iš tikrųjų yra vidujefunkcijos, bet ne už jos ribų. Norėdami pakeisti kažką už funkcijos ribų, turite naudoti "JavaScript" operatoriaus grįžimą, per kurį norėdami perkelti reikiamą vertę į išorę.

Po to, kai funkcija baigia, visa taibuvo susijęs su jo vykdymu, bus sunaikintas. Paleidimo metu funkcija gali keisti išorinius kintamuosius, išskyrus tuos, kurie aprašyti kitose funkcijose, įskaitant vidines.

Argumentai turi nuosavybės teisę, kadyra skirtas skambinti tam tikru metu vykdoma funkcija. Jei paskambinsi save, funkcija "JavaScript" funkcija leis rekursiją.

Funkcijų naudojimas

Pagrindinė funkcija yra paslaugos įvykis.naršyklė. Norėdami tai padaryti, beveik kiekviena žyma turi galimybę nurodyti įvykio pavadinimą ir jo apdorojančią funkciją. Galite nurodyti keletą įvykių, tačiau kiekvienam įvykiui nurodoma tik viena funkcija.

Viena funkcija gali aptarnauti daugelio puslapių elementus ir kelis įvykius. Naudodamas parametro "this" funkciją, galima perkelti informaciją į funkciją, iš kurios ji buvo išsiųsta.

Klasikinis JS funkcijų naudojimas -įvykių tvarkytojai apie elementus. Šiame pavyzdyje funkcija scfWecomeGo () arba scfWelcomeCancel () bus parodyta lankytojo prisijungimo / išėjimo formoje, o pasirinkus darbo režimą, scfMenuItemClick (šis).

javascript grįžti

Pastaruoju atveju parametras yra "tai",kuri leidžia stebuklingai išsiaiškinti, kokia dva iš skambučio atsirado. Apskritai, "JavaScript" yra taip kokybiškai implantuotas DOM ir leidžia patogiai naršyti po jo elementus, norint surinkti reikiamą informaciją, ta puslapio dinamika gali būti tiesiog nenuspėjama.

Funkcija neturi grąžinti eilutės.simboliai, numeris ar kita funkcija. Jis gali grąžinti pilną HTML elementą ir kuriame bus reikalingas elementų skaičius su savo įvykių tvarkytuvais.

Įdėdamas tokį elementą į puslapį, kūrėjas sukuria naują funkciją, kuri yra naudinga sprendžiant problemą ir patenkinant lankytojų interesus, tačiau ją įgyvendinant sunku.

Pradedant tokį visapusišką plėtrą,tai yra lengva supainioti su savo kodu, funkcijų skambučiais momentais, kai susidaro vienas ar kitas turinys vienoje ar kitoje puslapio dalyje. Prieš naudodamiesi šia vystymosi kryptimi, nesunku viską gerai pasverti.

Apie paskirstytą mąstymą

Kūrėjas turi galvoti apie visų puslapio elementų lygį, visų įvykių lygmenyje ir aiškiai suprasti, kaip viskas iš tikrųjų vyksta. Sunku, bet šis darbas yra vertas.

javascript masyvo funkcijos

"JavaScript" funkcija gali būti vykdomaatidėtas iki įvykio, ir gali būti daug tokių funkcijų, o įvykiai linkę plisti ir patenka į "įvairių" tvarkytojų "apimtį".

javascript klaida operacija yra nesaugi

Šiame pavyzdyje kažkur anksčiau vadinamasfunkcija, inicijuojanti failo navigacijos meniu elemento sukūrimą. Įsijungta peidžerių organizacija, ty langelyje yra tik septyni failai, kuriuos galima ištrinti ir apdoroti. Galite naršyti spustelėdami failo eilutę, klaviatūros rodyklėmis ar septynių eilučių blokais.

Kiekvienu atveju turi savo funkcijas. Kitaip tariant, tokiu paprastu pavyzdžiu reikia parašyti keletą dešimčių funkcijų, kurios reaguotų į įvairius įvykius, o kai kurios iš šių funkcijų tvarkys įvairias galimybes ir situacijas, kurios visai nėra susijusios su įvykiais.

javascript funkcijos vykdymas

Pavyzdžiui, ištrynus eilutę, apačioje turėtų būtijudėti aukštyn. Norėdami tai padaryti, jums reikės arba naujo pasirinkimo, kuris yra nelyginis ir pajėgus išteklių požiūriu, ar perskaičiuoti linijas, naudoti masyvų funkcijas javascript ir elegantiškai pasiekti tikslą.

Argumentai ir funkcijų rezultatai

Javascript leidžia jums įkelti kodą"Visiškai funkcionalus" būsena. Paprastai, kai funkcijos argumentas yra funkcija. Galima pasirinkti, kai funkcija grąžina funkciją. "JavaScript" tai visiškai ramiai.

Tai yra geras mechanizmas, tačiau įgyvendinimo požiūriu jis yra sudėtingas. Techniškai viskas leidžiama, semantiniu būdu užtikrinant, kad "funkcionalumo" perkėlimo logika yra įmanoma tik kvalifikuotam kūrėjui.

javascript, norint perkelti funkciją į funkciją

Kai veikia javascript funkcija - kur tai yranuėjo, bet kai funkcija sukuria funkciją ir dar vieną, tada sunku sekti logiką. Iš tiesų, klausimas yra ne taikyti kvalifikacijas, klausimas yra gauti saugų ir teisingą rezultatą.

Kūrėjo priežiūra yra aiški ir paprasta. Yra užduotis, jums reikia sprendimo, o ne klaida, pvz., "" JavaScript klaida "operacija yra nesaugi", švarus ekranas arba viso naršyklės variklio sustojimas.

Jei argumentas yra funkcija, tadakūrėjas perduoda kintamąjį su specialiomis savybėmis, tai yra ne skaičius, o ne eilutė, o ne objektas. Tačiau tokio argumento naudojimas gali lemti tai, kad išoriniai kintamieji pasikeis, o funkcijos vykdymas bus rezultatas. Priklausomai nuo to, kad bus perkelti atitinkami pakeitimai.

Sukurto kodo vykdymas

Įgyvendinti kodo generavimą sistemojekito kodo procesas, tai yra įmanoma naudojant "eval". Tai nėra laikomas puikiu sprendimu, bet dažnai galite nekomplikuoti kodą nereikalingomis funkcijomis, bet apriboti save banaliu Java kodo eilutės formavimu ir tiesiog ją vykdyti.

funkcija grąžina javascript funkciją

Šiame pavyzdyje įterpta eilutė yra formuojamaveikiantis div informacijos. Dvi skaičius ir informacijos turinys skiriasi skirtingoms pozicijoms, todėl toks sprendimas šioje situacijoje negarantuoja situacijos "javascript klaidos operacija yra nesaugi", tačiau ji patikimai duos pageidaujamą efektą.

Autoriaus pavyzdys nėra paveikslėlis.

"JavaScript" paradigmos "funkcija funkcija" niuansas

Jei yra galimybė daryti be perviršių, geriau ją naudoti. Visos parinktys yra geros. Žinoma, daugeliu atvejų tai yra vienintelis sprendimas.

Klasikinis recursijos pavyzdys: faktorinė skaičiavimas. Gana sunku parašyti algoritmą, kuris bus ciklas, bet labai paprasta išeiti už vertybės ribų. "Factorial" auga per greitai.

Tačiau tiek rekursija, tiek funkcija, kuri vadina kitą funkciją, galinčią atlikti galiojantį atgalinį ryšį, yra dalykų norma.

Pavyzdžiui, įprasta lentelė. Lentelėje gali būti kitų lentelių. Lankstymas neturėtų būti ribojamas. Kiekvienos lentelės rašymas savo funkcijų rinkiniu yra per daug prabanga.

Yra daug tokių pavyzdžių, ir visitai bus realios ir skubios užduotys, o ne iš programų rengimo srities. Būtent todėl problema būna ta, kad jūs negalite to daryti be pernelyg didelių rezultatų, sukurta funkcijų sistema, tiksliau, jos derinimas ir tolesnis patikimas darbas tampa susirūpinimu ne "JavaScript", o kūrėjo.

</ p>>
Skaityti daugiau: