2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Usein kysytyt kysymykset etupään JS-haastatteluissa kattavat monia näkökohtia, mukaan lukien perussyntaksin, tietorakenteet ja algoritmit, DOM-toiminnot, asynkronisen ohjelmoinnin, modularisoinnin, kehyksen/kirjaston käytön jne. Seuraavassa on joitain yleisiä JS-haastattelukysymyksiä ja niiden lyhyt analyysi:
var
、let
、const
Mitä eroa? Mikä on niiden laajuus ja elinkaari?i++
ja++i
Mitä eroa?break
jacontinue
Miten se eroaa, kun sitä käytetään silmukassa?push
、pop
、shift
、unshift
、splice
、slice
、join
、sort
odota)JSON.parse(JSON.stringify(obj))
, levitysoperaattori, rekursio ja muut menetelmät)Promise.all
jaPromise.race
?import
/export
), ja mitkä ovat sen edut?this
osoitussäännöt ja suorituskyky eri skenaarioissa.Esimerkkikysymykset: Selitä prototyyppiketjumekanismi JavaScriptissä.
jäsentää:
__proto__
Ominaisuudet (suositus ES6Object.getPrototypeOf()
menetelmä), tämä ominaisuus osoittaa sen konstruktoriinprototype
Attribuutit.Object.prototype
)。null
, mikä osoittaa, että prototyyppiobjekteja ei ole enää etsittävä.1. Mitkä ovat JavaScriptin tietotyypit? Mitä eroa niillä on?
vastaus:
JavaScriptissä on 8 tietotyyppiä, mukaan lukien perustietotyypit (primitiivityypit) ja viitetietotyypit (viitetyypit).
Suurin ero primitiivisten tietotyyppien ja viitetietotyyppien välillä on, kuinka ne tallennetaan ja osoitetaan. Perustietotyyppien arvot tallennetaan pinomuistiin ja arvot kopioidaan suoraan määrityksen aikana, kun taas viitetietotyyppien arvot tallennetaan kasomuistiin ja pinomuisti tallentaa viittaukset (eli osoitteet) arvoihin; kasomuistissa, jotka kopioidaan tehtävän aikana.
2. Puhutaanko laajuudesta ja sulkemisesta JavaScriptissä?
vastaus:
Laajuus : viittaa voimassa olevaan tunnistealueeseen, kuten muuttujiin ja funktioihin koodilohkossa. JavaScriptillä on pääasiassa kaksi laajuutta: globaali laajuus ja paikallinen laajuus (mukaan lukien funktioalue, lohkotason laajuus jne.). Globaalin laajuuden muuttujat näkyvät koko komentosarjassa, kun taas paikallisen laajuuden muuttujia voidaan käyttää vain siinä koodilohkossa, jossa se on määritetty.
Päättäminen : tarkoittaa, että funktio muistaa ja pääsee käsiksi leksikaaliseen laajuuteensa, vaikka funktio suoritetaan sen leksikaalisen laajuuden ulkopuolella. Sulkemisen pääasialliset käyttötarkoitukset ovat yksityisten muuttujien kapselointi, moduulien luominen jne. Sulkeminen mahdollistaa funktioiden pääsyn ja manipuloinnin funktion ulkopuolisiin muuttujiin, eivätkä nämä muuttujat ole helposti saastuneita tai muuttuvia edes funktion ulkopuolella.
3. Selitä asynkroninen ohjelmointi ja lupaus JavaScriptissä?
vastaus:
Asynkroninen ohjelmointi : tarkoittaa, että koodin suoritusjärjestys ei perustu kirjoitusjärjestykseen, vaan määräytyy tiettyjen ehtojen täyttymisen perusteella (kuten verkkopyynnöt, tiedostojen lukeminen ja kirjoittaminen jne.). JavaScript on yksisäikeinen, mutta se toteuttaa asynkronisen ohjelmoinnin tapahtumasilmukoiden ja takaisinsoittotoimintojen kautta.
Lupaus : on uusi ES6:ssa esitelty objekti, jota käytetään käsittelemään asynkronisia toimintoja. Lupausobjekti edustaa toimintoa, jota ei ehkä saada valmiiksi nyt, mutta joka valmistuu (tai epäonnistuu) tulevaisuudessa, ja sen tulosarvoa. Lupauksella on kolme tilaa: vireillä (käynnissä), täytetty (onnistui) ja hylätty (epäonnistunut). Promisen avulla voimme kirjoittaa asynkronista koodia synkronisesti, jolloin koodista tulee tiiviimpi, helpompi ymmärtää ja ylläpitää.
4. Puhutaanko tapahtumien kuplittamisesta ja tapahtumien sieppaamisesta JavaScriptillä?
vastaus:
Tapahtuma kuplii : tarkoittaa, että tapahtuma alkaa kohdeelementistä ja etenee sitten DOM-puun ylimmälle tasolle (eli asiakirjaobjektiin). Tapahtuman kuplitusprosessin aikana minkä tahansa tason DOM-elementit voivat kaapata tapahtuman ja käsitellä sitä.
tapahtuman talteenotto : Toisin kuin tapahtumien kupliminen, tapahtuman sieppaus alkaa DOM-puun yläosasta ja etenee sitten kohdeelementtiin. Tapahtuman talteenottoprosessin aikana minkä tahansa tason DOM-elementit voivat kaapata tapahtuman ja käsitellä sitä.
JavaScriptissä voit asettaa tapahtumankäsittelymenetelmän addEventListener-menetelmän kolmannen parametrin kautta, eli käyttää tapahtumakuplaa tai tapahtuman kaappausta. Jos kolmas parametri on tosi, se tarkoittaa tapahtumien sieppauksen käyttöä, jos se on epätosi tai se jätetään pois, se tarkoittaa tapahtumakuplauksen käyttöä.
5. Mitä uusia ominaisuuksia ES6+ sisältää?
vastaus:
ES6:ssa (ECMAScript 2015) ja myöhemmissä versioissa on otettu käyttöön monia uusia ominaisuuksia, mukaan lukien, mutta niihin rajoittumatta: