Atsakyta į 12 bendrų „JavaScript“ klausimų

Puslapis 1 iš 2: 10 bendrų „JavaScript“ klausimų ir atsakymų

„JavaScript“ yra vienas lankstiausių interneto dizaino įrankiai aplinkui, kaip mūsų geriausi „JavaScript“ pavyzdžiai straipsnis rodo. Tačiau net ir naudojant didžiausią įrankių visuomet reikia daugiau sužinoti ir atrasti.

Čia yra 12 klausimų (ir atsakymų) apie „JavaScript“, dėl kurio daugelis kūrėjų liko sukrėsti - net patyrę „JavaScript“ koduotojai.

Šiame puslapyje nagrinėjami dažniausiai užduodami klausimai ir atsakymai, įskaitant tuos, kurie dažnai būna išpūsti darbo pokalbiai . Kitame puslapyje nuodugniau apžvelgsime dvi sudėtingesnes sritis: kaip naudoti „JavaScript“, kad pagerintumėte svetainės našumą, ir kaip „JavaScript“ ateitį.



01. Kas yra prototipinis paveldėjimas ir kiek jis naudingas?

„JavaScript“ beveik viskas yra objektas. Kiekvienas objektas turi prototipą, iš kurio paveldi vertybes ir elgesį. Jei objekte nėra prašomos ypatybės, JS vietoj jo ieškos savo prototipe. Jis tęsia prototipų grandinę, kol randa atitikmenį arba pateikia klaidą.

Tai naudinga kuriant objektus, kurių reikšmės ir operacijos yra vienodos. Turint šiuos gyvus pagal prototipą, turi egzistuoti tik viena jų kopija, kad projektai būtų atmintyje efektyvesni.

var parent = {inherit: true} var childA = Object.create(parent); var childB = {}; Object.setPrototypeOf(childB, parent); class childC extends parent {}

Prototipai gali būti pridėti prie kūrimo objektų naudojant Object.create () arba po to Object.setPrototypeOf () . ES2015 turi „class“ raktinį žodį, kuris, vartojamas kartu su „extends“, tą vertę naudos kaip savo prototipą.

02. Kaip „JavaScript“ galima naudoti siekiant pagerinti prieinamumą internete?

Tai būdinga šiuolaikiniams interneto prieinamumas įrankius, kad būtų galima tvarkyti „JavaScript“ ir dinaminį turinį. Jis gali būti naudojamas šioms technologijoms padėti tol, kol jis naudojamas kaip priedas, o ne reikalingas, kad veiktų.

Dažnas būdas padėti vartotojams yra naudingo dėmesio valdymas. Pavyzdžiui, kalendorius turėtų galėti per dienas važiuoti naudodamas rodyklių klavišus, aukštyn ir žemyn klavišus praleisdami po savaitę. Tai tik klaviatūros įvykių klausymo atvejis, kai dėmesys yra tame komponente.

Ekrano skaitytuvams taip pat reikėtų paskelbti svarbius duomenis, pasikeitusius dėl „JavaScript“, pvz., Formos atsiliepimus. Dažnai tai pasiekiama pažymint konteinerį kaip gyvą regioną.

kaip panaikinti Photoshop sluoksnio pasirinkimą

03. Kuo burbuliuoja įvykis ir kuo jis skiriasi nuo įvykio fiksavimo?

Renginių delegavimas yra technika, kuri savo pranašumams naudoja renginių burbuliavimą. Pridėdami klausytoją prie tėvų elemento, kūrėjai įspėjami apie bet kurio jo vaiko įvykius

Tiek įvykių fiksavimas, tiek burbuliavimas yra proceso, vadinamo „įvykių platinimu“, dalis, kai naršyklės reaguoja į įvykius, vykstančius puslapyje. Senesnės naršyklės darė vieną ar kitą, tačiau šiais laikais visos daro abi.

Pirmasis etapas - fiksavimo etapas - įvyksta iškart, kai įvykis įvykis. Jis prasideda aukščiausiu lygiu, kuris yra „dokumentas“ arba „langas“, atsižvelgiant į įvykį. Iš ten jis praeina ir kas jame gyvena, kol pasieks elementą, kuriame įvykis įvyko.

Tada įvyksta antroji fazė - burbuliavimo fazė. Jis pakartoja procesą, bet atvirkščiai, pradedant nuo įvykio sukelto elemento ir „burbuliuojant“ iki aukščiausio elementas. Pridedant įvykių klausytojus, tai yra numatytasis nustatymas.

kaip makiažą pasidaryti Photoshop

04. Kaip renginių delegavimas pagerina svetainių, kuriose yra daug interaktyvių elementų, kodą?

Svetainėse dažnai yra daug dinaminio turinio, kuris reguliariai keičiasi puslapyje. Jei šie elementai turi būti interaktyvūs, jiems reikia, kad įvykių klausytojai pasirinktų tas sąveikas. Jei kiekvienam elementui reikalingas atskiras klausytojas, tai sugadins kodą ir padidins tai, ko reikia naršyklei sekti.

Renginių delegavimas yra technika, kuri savo pranašumams naudoja renginių burbuliavimą. Pridėdami klausytoją prie tėvų elemento, kūrėjai įspėjami apie bet kurio jo vaiko įvykius.

parentEl.addEventListener('click', function(e) { if(e.target && e.target.nodeName == 'BUTTON') { // Button clicked } });

Įvykio atgalinio atšaukimo metu pirminis to įvykio tikslas visada bus „taikinys“, pagal kurį bus galima nuspręsti, ką daryti toliau. Pavyzdžiui, duomenų atribute gali būti ID, nurodantis objekto ypatybę.

05. Kas yra uždarymai ir kuo jie gali būti naudingi tvarkant kodą?

„JavaScript“ funkcijos naudoja vadinamąją „leksinę aplinką“, vadinasi, ji turi prieigą prie kintamųjų, apibrėžtų išorėje, tačiau viduje apibrėžtus galima pasiekti tik viduje.

function outer() { let x = 'Web Designer'; function shout() { alert(`I love ${x}!`); } shout(); }

Skambinama išorinis() rodys „Aš myliu interneto dizainerį!“, bet jei už „šauksmo“ ar „x“ nurodoma ne išorinis() , abu bus neapibrėžti. Uždarymas yra funkcijos derinys kartu su leksine aplinka. Šiuo atveju uždarymas yra „išorinė“ funkcija.

Tai naudinga kuriant kelis komponentus, nes viskas, kas deklaruojama viduje, neturės įtakos kitiems. Jie gali būti naudojami kuriant privačias funkcijas ir kintamuosius panašiai kaip ir kitos į objektą orientuotos kalbos, tokios kaip „Python“. Modulio modelyje plačiai naudojami uždarymai, kad būtų pateikti struktūriniai modulių sąveikos būdai.

06. Ką reiškia „naudoti griežtą“ kodo bloko viršuje?

ES5 pristatė pasirinktinį „JavaScript“ variantą, vadinamą „griežtuoju režimu“. Griežtu režimu ankstesnių versijų keistenybės sukeltų klaidų, o ne dėl nenumatyto elgesio.

function strictFunction() { 'use strict'; myVar = 4; //ReferenceError }

Aukščiau mes pasiekiame kintamąjį, kurio nėra. Už griežto režimo tai reikštų „myVar“ pridėjimą prie visuotinės apimties, kuri, jei nesame atsargūs, gali visiškai perrašyti anksčiau scenarijuje apibrėžtą funkcionalumą. Griežtu režimu tai sukelia klaidą ir sustabdo bet kokį sunaikinimą. Pagal numatytuosius nustatymus „ES2015“ moduliai veikia griežtu režimu, tačiau uždarymuose, sukurtuose naudojant funkcijas, „Use griežtai“ galima pritaikyti funkcijų lygiu ir visą failą.

07. Ką reiškia „kėlimas“, kalbant apie „JavaScript“?

„JavaScript“ yra unikalus tuo, kad prieš platinant jo nereikia kompiliuoti. Naršyklė sudarys scenarijus juos suradusi ir užrašys visas funkcijas ir kintamuosius, kurie yra deklaruoti.

Tada naršyklė atlieka antrą leidimą vykdyti kodą, žinodama, kur taikomos šios funkcijos ir kintamieji. Vykdant bloką, jo funkcija ir kintamos deklaracijos „pakeliamos“ į bloko viršų.

welcome('Matt'); //'Welcome, Matt.' function welcome(name) { return `Welcome, ${name}.`; }

Šiame pavyzdyje mes galime naudoti „sveikinimo“ funkciją, nes ji yra pakelta iki scenarijaus viršaus.

„Android“ telefonų plunksnos plunksna

08. Kuo skiriasi rodyklės funkcija nuo įprastos funkcijos?

ES2015 pateikė daug pakeitimų, o vienas, norėdamas greitai paveikti, buvo rodyklių funkcijos.

function CountUp() { this.x = 0; setInterval(() => console.log(++this.x), 1000); } var a = new CountUp();

Pagrindinis skirtumas, nepaisant to, kad rašyti trumpiau, yra tas, kad rodyklės funkcijos nesukuria savo vertės „šiam“. Vietoj to jie naudos uždaro bloko vertę. Ankstesniame pavyzdyje tai atjungs 1, 2, 3 ir tt kas sekundę. Naudojant įprastą funkciją, ši.x nebūtų apibrėžta, taigi ji užregistruotų NaN. Laikoma, kad rodyklės funkcijos kūnas yra jos grąžinimo vertė. Tai daro juos naudingus pažadams, kai perduodamos vertybės. Reguliarios funkcijos turi aiškiai grąžinti vertę arba grįš neapibrėžtos.

09. Kur turėčiau naudoti „let“ ir „const“ raktinius žodžius vietoj „var“?

Kitas esminis ES2015 pakeitimas buvo „let“ ir „const“ kaip alternatyvių kintamųjų apibrėžimo būdų įvedimas. Taip deklaruoti kintamieji apsiriboja bloku, kuriame jie buvo apibrėžti. Tai suteikia daugiau tikrumo, kad skirtinguose blokuose sukurtos vertės netrukdys kodui išorėje.

for(let x=1; x<=3; x++) { console.log(x); // 1, 2, 3} console.log(x); // 'x is not defined'

Jei kintamojo vertė nepasikeis, vietoj „let“ naudokite „const“. Klaidos metamos bandant iš naujo apibrėžti konstantą. Objektai ir masyvo kintamieji vis tiek gali keistis viduje, tačiau nėra visiškai pakeisti.

Tiek „let“, tiek „const“ nėra pakeliami kaip „var“, todėl prieš juos inicializuoti negalima nurodyti. Tarp bloko pradžios ir inicijavimo yra žinoma kaip „laikinosios negyvosios zonos“ ir dažnai gali sukelti painiavą.

10. Kas yra funkcinis programavimas ir kuo jis skiriasi?

Funkcinė programavimo grafika

Funkcinis programavimas suteikia kitokį mąstymą

Tai yra alternatyvus būdas kurti programas perduodant programos būseną tik per funkcijas. Vengiant šalutinių poveikių, galima sukurti lengvai suprantamą kodą.

Tradiciškai „JavaScript“ projektai kuriami su objektu orientuota struktūra. Informacija apie dabartinę programos būseną laikoma objektuose, kurie atnaujinami keičiantis puslapiui.

geležies milžino menas

Funkcinis programavimas suteikia kitokį mąstymą. Nors tokios kalbos kaip F # jau kurį laiką ją vartojo, ES2015 į „JavaScript“ atnešė svarbių metodų, kurie tai atveria žiniatinkliui.

Visas darbas turi būti atliekamas „grynose“ funkcijose. Tai yra funkcijos, kurių neveikia jokie duomenys, nepatenkantys į šios funkcijos taikymo sritį. Kitaip tariant, jei funkcijai pateikiamos tos pačios reikšmės, tas pats rezultatas visada bus grąžintas.

Tai taip pat reiškia, kad tarp funkcijų negali būti bendros būsenos. Bet kuri programos būsena, kurią reikia naudoti, turėtų būti perduodama kaip parametras funkcijai, o ne prieiga prie jos tiesiogiai.

Galiausiai, kodas turėtų vengti keisti reikšmes po jų sukūrimo. Pavyzdžiui, kiekvienas objekto pakeitimas turėtų grąžinti to objekto kopiją su pakeista verte. Taip siekiama išvengti šalutinio poveikio, kuris gali sukelti klaidų ir apsunkinti kodo testavimą.

Kitas puslapis: Kaip aš galiu naudoti JS norėdamas pagerinti savo svetainės našumą? ir kaip galiu apsaugoti savo „JavaScript“ kodą ateityje?

  • 1
  • du

Dabartinis puslapis: 10 bendrų „JavaScript“ klausimų ir atsakymų

Kitas puslapis „JavaScript“: svetainės našumas ir ateitis