javascript | ||
---|---|---|
? | ||
Generell informasjon | ||
Vanlige utvidelser | .js | |
Paradigme | Multiparadigme , funksjonell programmering , [ 1 ] prototypebasert programmering , imperativ , tolket ( skripting ) | |
Dukket opp i | 4. desember 1995 | |
Designet av | Netscape Communications , Mozilla Foundation | |
Siste stabile versjon | ECMAScript 2021 (01. juni 2021 (1 år, 4 måneder og 15 dager)) | |
type system | svak, dynamisk, and | |
implementeringer | SpiderMonkey , Rhino , KJS , JavaScriptCore , V8 , Chakra . | |
dialekter | ECMAScript | |
påvirket av | Java , Perl , Self , Python , C , Scheme | |
har påvirket | ObjectiveJ, JScript .NET, TIScript | |
JavaScript (ofte forkortet JS ) er et tolket programmeringsspråk , dialekt av ECMAScript -standarden . Det er definert som objektorientert , [ 2 ] prototypebasert , imperativ, svakt skrevet og dynamisk .
Den brukes først og fremst på klientsiden , implementert som en del av en nettleser som tillater brukergrensesnittforbedringer og dynamiske nettsider [ 3 ] og JavaScript på serversiden ( Server-side JavaScript eller SSJS ). Bruken i applikasjoner utenfor nettet , for eksempel i PDF -dokumenter , skrivebordsapplikasjoner (for det meste widgets ) er også betydelig.
Siden 2012 har alle moderne nettlesere fullt ut støtter ECMAScript 5.1, en versjon av JavaScript. Eldre nettlesere støtter minst ECMAScript 3. Den sjette utgaven ble utgitt i juli 2015. [ 4 ]
JavaScript ble utformet med syntaks som ligner på C++ og Java , [ 5 ] [ 6 ] selv om det tar i bruk navn og konvensjoner fra programmeringsspråket Java. Java og JavaScript har imidlertid forskjellig semantikk og formål. Forholdet deres er rent kommersielt, etter kjøpet av skaperen av Java (Sun Microsystems) fra Nestcape Navigator (skaperen av LiveScript) og endringen av navn på programmeringsspråket.
Alle moderne nettlesere tolker JavaScript-kode som er innebygd i nettsider. For å samhandle med en nettside leveres JavaScript-språket med en implementering av Document Object Model (DOM). Javascript er det eneste programmeringsspråket som nettlesere forstår.
Tradisjonelt har det blitt brukt i HTML -websider for å utføre operasjoner og kun innenfor rammen av klientapplikasjonen , uten tilgang til serverfunksjoner . Det er for tiden mye brukt til å sende og motta informasjon fra serveren sammen med hjelp av andre teknologier som AJAX . JavaScript tolkes av brukeragenten ettersom setningene lastes ned sammen med HTML -koden .
Siden utgivelsen av ECMAScript 1-standarden i juni 1997 har det vært versjon 2, 3 og 5, som er den mest brukte i dag (versjon 4 ble droppet [ 7 ] ). I juni 2015 ble ECMAScript 6-versjonen stengt og publisert. [ 8 ]
JavaScript ble opprinnelig utviklet av Brendan Eich fra Netscape under navnet Mocha , som senere ble omdøpt til LiveScript , og til slutt ble JavaScript. Navneendringen falt omtrent sammen med tiden da Netscape la Java-teknologistøtte til Netscape Navigator-nettleseren sin i versjon 2002 i desember 1995. Navngivningen forårsaket forvirring, og ga inntrykk av at språket er en utvidelse av Java. , og ble vurdert av mange som en markedsføringsstrategi for Netscape for å oppnå prestisje og innovere innen nye webprogrammeringsspråk. [ 9 ] [ 10 ]
"JAVASCRIPT" er et registrert varemerke for Oracle Corporation . [ 11 ] Den brukes under lisens av produkter laget av Netscape Communications og nåværende enheter som Mozilla Foundation . [ 12 ] [ 13 ]
Microsoft kalte JavaScript-dialekten " JScript ", for å unngå merkevareproblemer. JScript ble tatt i bruk i versjon 3.0 av Internet Explorer, utgitt i august 1996, og inkluderte Effect 2000- støtte for datofunksjoner, en avvik fra de som var basert på den tiden. Dialektene kan virke så like at begrepene "JavaScript" og "JScript" ofte brukes om hverandre, men JScript-spesifikasjonen er på mange måter uforenlig med ECMA-spesifikasjonen.
For å unngå disse inkompatibilitetene utviklet World Wide Web Consortium standarden Document Object Model (DOM, eller Document Object Model på spansk), som inkluderer Konqueror , versjon 6 av Internet Explorer og Netscape Navigator , Opera versjon 7, Mozilla Application Suite og Mozilla Firefox fra den første versjonen. [ referanse nødvendig ]
I 1997 foreslo forfatterne [ 14 ] JavaScript å bli adoptert som en standard av European Computer Manufacturers' Association ECMA , som til tross for navnet ikke er europeisk, men internasjonal, basert i Genève. I juni 1997 ble den tatt i bruk som en ECMA-standard, under navnet ECMAScript . Like etter også som ISO- standard .
Netscape introduserte en skriptimplementering på serversiden med Netscape Enterprise Server , utgitt i desember 1994 (kort tid etter utgivelsen av JavaScript for nettlesere). [ 15 ] [ 16 ] Fra midten av 2000-tallet har det vært en spredning av JavaScript-implementeringer på serversiden. Node.js er et av de bemerkelsesverdige eksemplene på JavaScript på serversiden, som brukes i store prosjekter. [ 17 ] [ 18 ]
JavaScript har blitt et av de mest populære og mest brukte programmeringsspråkene på internett. Til å begynne med avviste imidlertid mange utviklere språket fordi det tiltenkte publikummet blant annet besto av artikkelutgivere og andre hobbyfolk. [ 19 ] Ankomsten av Ajax brakte JavaScript tilbake til fremtreden og tiltrakk seg oppmerksomheten til mange andre programmerere. Som et resultat av dette var det en spredning av et sett med rammeverk og biblioteker av generelt omfang, forbedret JavaScript-programmeringspraksis og økt bruk av JavaScript utenfor nettlesere , som sett med spredningen av JavaScript-miljøer på nettsiden. server . I januar 2009 ble CommonJS- prosjektet lansert med mål om å spesifisere et bibliotek for bruk av vanlige oppgaver primært for utvikling utenfor nettleseren. [ 20 ]
I juni 2015 ble ECMAScript 6 -standarden stengt og publisert [ 21 ] [ 22 ] med uregelmessig støtte mellom nettlesere [ 23 ] og som gir JavaScript med avanserte funksjoner som ble savnet og som ofte brukes i JavaScript. andre språk, som f.eks. som moduler for kodeorganisering, sanne klasser for objektorientert programmering , piluttrykk, iteratorer, generatorer eller løfter for asynkron programmering.
Versjon 7 av ECMAScript er kjent som ECMAScript 2016, [ 24 ] og er den nyeste versjonen tilgjengelig, utgitt i juni 2016. Det er den første versjonen som bruker en ny årlig utgivelsesprosedyre og utviklingsprosess. [ 25 ]
Følgende funksjoner er felles for alle implementeringer som samsvarer med ECMAScript-standarden, med mindre du eksplisitt spesifiserer noe annet.
JavaScript støtter mye av programmeringsstrukturen til C (for eksempel setninger if, looper for, setninger switchosv.). Med ett forbehold, delvis: i C er variabler scoped til blokken der de ble definert; JavaScript støtter imidlertid ikke dette, siden omfanget av variabler er det for funksjonen de ble deklarert i. Dette endres med ECMAScript 2015-utgivelsen, ettersom den legger til støtte for blokkomfang via nøkkelordet . Som i C, skiller JavaScript mellom uttrykk og utsagn. En syntaktisk forskjell med hensyn til C er automatisk innsetting av semikolon, det vil si at i JavaScript kan semikolonene som avslutter en setning utelates. [ 26 ] let
JavaScript er offisielt under Mozilla Foundation -organisasjonen , og nye språkfunksjoner legges til med jevne mellomrom. Imidlertid støtter bare noen JavaScript-motorer disse funksjonene:
den siste versjonen av språket er ECMAScript 2016 publisert 17. juni 2016. [ 38 ]
Variabler i JavaScript er definert ved å bruke var nøkkelordet : [ 39 ]
var x ; // definerer variabelen x, selv om den ikke har noen verdi tildelt som standard var y = 2 ; // definer variabelen y og tilordne verdien 2 til denTenk på kommentarene i eksemplet ovenfor, som innledes med 2 skråstreker.
Det er ingen I/O- funksjoner inkludert i språket; kjøretidsmiljøet gir det allerede. ECMAScript-spesifikasjonen i sin 5.1-utgave nevner: [ 40 ]
...det er faktisk ingen bestemmelser i denne spesifikasjonen for ekstern datainngang eller utdata for beregnede resultater.
Imidlertid har de fleste kjøretidsmiljøer et objekt kalt [ 41 ]console som kan brukes til å skrive ut av feilsøkingskonsollens utdatastrøm. Her er et enkelt program som skriver ut "Hello world!":
konsoll . log ( "Hei verden!" );En rekursiv funksjon :
funksjon faktoriell ( n ) { if ( n === 0 ) { return 1 ; } returner n * faktoriell ( n - 1 ); }Eksempler på anonym funksjon (eller lambda- funksjon ) og en stenging:
var displayClosure = function () { var count = 0 ; return funksjon () { return ++ count ; }; } var inc = displayClosure (); inc (); // returnerer 1 inc (); // returnerer 2 inc (); // retur 3Selvpåkallende uttrykk lar funksjoner overføre variabler til den etter parameter innenfor sine egne lukkinger.
var v ; v = 1 ; var getValue = ( function ( v ) { return function () { return v ;}; }( v )); v = 2 ; getValue (); // 1Følgende kode viser ulike funksjoner i JavaScript.
/* Finn det minste felles multiplumet (LCM) av to tall */ function LCMCalculator ( x , y ) { // constructor function var checkInt = function ( x ) { // indre funksjon if ( x % 1 !== 0 ) { kaste ny TypeError ( x + " er ikke et heltall" ); // kast et unntak } returner x ; }; dette . a = checkInt ( x ) // semikolon er valgfritt dette . b = checkInt ( og ); } // Prototypen til objektforekomstene opprettet av konstruktøren er den for "prototype"-egenskapen til konstruktøren. LCMC-kalkulator . prototype = { // objekt definert som bokstavelig konstruktør : LCMCalculator , // når vi tilordner en prototype på nytt, setter vi korrekt konstruktøregenskapen gcd : function () { // metode som beregner den største felles faktoren // Euklids algoritme: var a = Matematikk . abs ( dette . a ), b = matematikk . abs ( dette . b ), t ; if ( a < b ) { // swap variabler t = b ; b = a ; a = t ; } while ( b !== 0 ) { t = b ; b = a % b ; a = t ; } // Vi trenger bare å beregne GCF én gang, så vi 'redefinerer' denne metoden. // (Ikke egentlig en overstyring – den er definert på selve forekomsten, så // this.gcd refererer til denne 'overstyringen' i stedet for LCMCalculator.prototype.gcd). // Dessuten, 'gcd' === "gcd", this['gcd'] === this.gcd this [ 'gcd' ] = function () { return a ; }; gå tilbake til ; }, // Objektegenskapsnavn kan spesifiseres med strenger avgrenset med enkle anførselstegn (') eller doble anførselstegn (“). "lcm" : function () { // Variablenavn kolliderer ikke med objektegenskaper. For eksempel: |lcm| er ikke |this.lcm|. // Ikke bruk |this.a * this.b| for å unngå problemer med flyttallsberegninger. var lcm = dette . til / dette . gcd () * denne . b ; // Vi trenger bare å beregne LCM én gang, så vi "redefinerer" denne metoden. dette . lcm = funksjon () { return lcm ; }; retur lcm ; }, toString : function () { return "LCMCalculator: a = " + dette . a + ", b = " + dette . b ; } }; // Vi definerer en generisk funksjon for å skrive ut et resultat; denne implementeringen fungerer bare i nettlesere funksjonsutgang ( x ) { document . kropp . appendChild ( dokument . createTextNode ( x )); dokument . kropp . appendChild ( dokument . createElement ( 'br' )); } // Merk: .map()- og .forEach()-metodene til Array-prototypen er definert i JavaScript 1.6. // Disse metodene brukes her for å demonstrere språkets iboende funksjonelle natur. [[ 25 , 55 ], [ 21 , 56 ], [ 22 , 58 ], [ 28 , 56 ]]. map ( function ( par ) { // bokstavelig konstruksjon av en Array + mapping funksjon. returner ny LCMCalculator ( par [ 0 ], par [ 1 ]); }). sort ( function ( a , b ) { // sorter samlingen med denne funksjonen returner a . lcm () - b . lcm (); }). forEach ( function ( obj ) { output ( obj + ", gcd = " + obj . gcd () + ", lcm = " + obj . lcm ()); });Følgende eksempel viser utdataene som skal vises i et nettleservindu.
LCMCalkulator: a = 28, b = 56, gcd = 28, lcm = 56 LCMC-kalkulator: a = 21, b = 56, gcd = 7, lcm = 168 LCMC-kalkulator: a = 25, b = 55, gcd = 5, lcm = 275 LCMCalkulator: a = 22, b = 58, gcd = 2, lcm = 638Den vanligste bruken av JavaScript er å skrive funksjoner som er innebygd i HTML-sider og som samhandler med Document Object Model (DOM) på siden. Noen enkle eksempler på denne bruken er:
Fordi JavaScript-kode kan kjøres lokalt i brukerens nettleser (i stedet for på en ekstern server), kan nettleseren reagere raskt på brukerhandlinger, noe som gjør en applikasjon mer responsiv. På den annen side kan JavaScript-kode oppdage brukerhandlinger som HTML alene ikke kan, for eksempel tastetrykk. Applikasjoner som Gmail drar nytte av dette: det meste av brukergrensesnittlogikken er skrevet i JavaScript, og sender forespørsler til serveren (for eksempel innholdet i en e-postmelding). Den økende trenden for bruk av Ajax-programmering utnytter på samme måte denne teknikken.
En JavaScript-motor (også kjent som en JavaScript-tolk eller JavaScript-implementering) er en tolk som tolker JavaScript-kildekode og kjører skript deretter. Den første JavaScript-motoren ble laget av Brendan Eich hos Netscape Communications Corporation, for Netscape Navigator-nettleseren. Motoren, kalt SpiderMonkey, er implementert i C. Den har siden blitt oppdatert (i JavaScript 1.5) for å samsvare med ECMA-262 utgave 3. Rhino-motoren, skapt primært av Norris Boyd (tidligere fra Netscape, nå hos Google) er en implementering av JavaScript i Java . Rhino, som SpiderMonkey, er ECMA-262 edition 3-kompatibel.
En nettleser er det desidert vanligste vertsmiljøet for JavaScript. Nettlesere lager ofte ikke-native, kjøretidsavhengige objekter for å representere Document Object Model (DOM) i JavaScript. Nettserveren er et annet vanlig tjenestemiljø. En JavaScript-nettserver eksponerer vanligvis sine egne objekter for å representere HTTP-forespørsels- og svarobjekter, som et JavaScript-program deretter kan avhøre og manipulere for å generere nettsider dynamisk.
Fordi JavaScript er det eneste språket som de fleste populære nettlesere deler støtte for, har det blitt et språk som mange rammeverk på andre språk kompilerer til, selv om JavaScript ikke er laget for slike formål. [ 43 ] Til tross for ytelsesbegrensningene som ligger i dens dynamiske natur, har den økte hastigheten til JavaScript-motorer gjort dette språket til et overraskende gjennomførbart kompileringsmiljø.
Her er et kort eksempel på en nettside (som samsvarer med standardene til HTML5 -standarden ) som bruker JavaScript for DOM -håndtering :
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < title > Enkelt eksempel </ title > </ head > < body > < h1 id = "header" > Dette er JavaScript </ h1 > < script > dokument . kropp . appendChild ( document . createTextNode ( 'Hei verden!' )); var h1 = dokument . getElementById ( 'header' ); // inneholder referansen til <h1>-taggen h1 = document . getElementsByTagName ( 'h1' )[ 0 ]; // tilgang til det samme <h1>-elementet </ script > < noscript > Nettleseren din støtter ikke JavaScript, eller JavaScript er deaktivert. </ noscript > </ body > </ html >Fordi JavaScript kjører i så mange forskjellige miljøer, er en viktig del av testing og feilsøking å teste og verifisere at JavaScript-koden din fungerer riktig i flere nettlesere. DOM-grensesnittet for tilgang til og manipulering av nettsider er ikke en del av ECMAScript-standarden, eller JavaScript i seg selv. DOM er definert av standardiseringsinnsatsen til W3C , en uavhengig organisasjon. I praksis skiller ulike nettleseres implementeringer av JavaScript seg både fra hverandre og fra standardene til standarden.
For å løse disse forskjellene, kan JavaScript-forfattere ha vært i stand til å skrive standardkompatibel kode som også vil kjøre riktig i de fleste nettlesere, eller hvis det ikke er mulig, i det minste skrive kode som er i stand til å kontrollere tilstedeværelsen av visse nettleserfunksjoner og at den oppfører seg annerledes hvis den blir sagt. funksjonalitet er ikke tilgjengelig. [ 44 ] Det er tilfeller der to nettlesere kan implementere den samme funksjonen, men med forskjellig oppførsel, et faktum som kan hjelpe programmerere til å oppdage hvilken nettleser som kjører i det øyeblikket og dermed endre oppførselen til skrivingen din for å matche. [ 45 ] [ 46 ] Programmerere bruker også ofte biblioteker eller verktøy som tar hensyn til forskjellene mellom nettlesere.
Dessuten kan det hende at skriptene ikke fungerer for enkelte brukere. For eksempel kan en bruker:
For å støtte disse brukerne lager webutviklere ofte sider som er feiltolerante basert på brukeragent (nettlesertype) som ikke støtter JavaScript. Spesielt bør siden fortsatt være nyttig uten tilleggsfunksjonene som JavaScript ville ha lagt til. En alternativ tilnærming som mange finner å foretrekke er å først lage innhold ved hjelp av teknologier som fungerer i alle nettlesere, og forbedre innholdet for brukere som har aktivert JavaScript.
Forutsatt at brukeren ikke har deaktivert kjøring av JavaScript-kode, bør JavaScript på klientsiden skrives både med det formål å forbedre opplevelsene til besøkende med visuelle eller fysiske funksjonshemninger, og for å unngå å skjule informasjon fra disse besøkende. [ 47 ]
Skjermlesere , brukt av blinde og svaksynte, kan tas i betraktning av JavaScript og dermed kunne få tilgang til og lese DOM-elementene på siden. Skrevet HTML-kode bør være så kortfattet, navigerbar og semantisk rik som mulig, enten JavaScript kjøres eller ikke.
JavaScript skal ikke være helt avhengig av musehendelser i nettleseren og bør være tilgjengelig for brukere som ikke ønsker å bruke musen (datamaskinen) til å navigere eller som velger å kun bruke tastaturet. Det er enhetsuavhengige hendelser som onfocusog onchangesom er å foretrekke i de fleste tilfeller. [ 47 ]
JavaScript må ikke brukes til å skape forvirring eller desorientering for nettbrukeren. For eksempel, modifisering eller deaktivering av normal nettleserfunksjonalitet, som å endre måten naviger tilbake-knappen eller oppdateringshendelsen oppfører seg på, er praksis som vanligvis best unngås. På samme måte reduserer det å utløse hendelser som brukeren kanskje ikke er klar over brukerens følelse av kontroll og forårsaker uventede endringer i sideinnholdet. [ 48 ]
Ofte blir prosessen med å tilby en kompleks nettside med høyest mulig grad av tilgjengelighet et ikke-trivielt problem der mange saker ender opp med å bli debattert og gitt mening, som krever alles forpliktelse til slutten. Imidlertid er brukeragenter og hjelpeteknologier for funksjonshemmede i stadig utvikling, og nye retningslinjer og informasjon blir fortsatt lagt ut på nettet. [ 47 ]
JavaScript og DOM lar programmerere misbruke det til å introdusere skript som kjører kode med skadelig innhold uten brukerens samtykke, og dermed kompromittere brukersikkerheten.
Nettleserutviklere tar hensyn til denne risikoen ved å bruke to begrensninger. For det første kjører skriptene i en sandkasse der bare nettrelaterte handlinger kan utføres, ikke generelle programmeringsoppgaver som filoppretting. For det andre er det begrenset av samme opprinnelsespolicy: skript fra ett nettsted har ikke tilgang til informasjon sendt til et annet nettsted (fra et annet domene), for eksempel brukernavn, passord eller informasjonskapsler. De fleste JavaScript-sikkerhetsfeil er relatert til brudd på en av disse to begrensningene.
Det er prosjekter som AdSafe eller Secure ECMA script (SES) som gir høyere sikkerhetsnivåer, spesielt i kode laget av tredjeparter (for eksempel annonser). [ 49 ] [ 50 ]
Content Secure Policy (CSP) er den primære metoden som er tenkt for å sikre at bare klarert kode kan kjøres på en nettside.
Et vanlig sikkerhetsproblem i JavaScript er skripting på tvers av nettsteder , eller XSS, et brudd på retningslinjene for samme opprinnelse. XSS-sårbarheter lar en angriper injisere JavaScript-kode på nettsider som brukeren besøker. Et slikt nettsted kan være en bank, der angriperen kan få tilgang til bankapplikasjonen med offerets privilegier, som kan avsløre hemmelig informasjon eller overføre penger uten offerets autorisasjon. En løsning på XSS-sårbarheter er å bruke HTML-escape når du viser informasjon fra upålitelige kilder.
Noen nettlesere inkluderer delvis beskyttelse mot reflekterte XSS-angrep (angriperen er i samme nettforespørsel). Angriperen oppgir en URL inkludert ondsinnet kode. Men selv nettleserbrukere er sårbare for andre XSS-angrep, for eksempel de der ondsinnet kode er lagret i en database. Bare riktig utforming av webapplikasjoner på serversiden kan totalt forhindre XSS. XSS-sårbarheter kan også oppstå på grunn av kjøringsfeil fra nettleserutviklere. [ 51 ]
En annen sårbarhet er forespørselsforfalskning på tvers av nettsteder eller CSRF. I CSRF lurer det angripende nettstedets kode offerets nettleser, slik at angriperen kan komme med forespørsler på vegne av offeret, noe som gjør det umulig for målapplikasjonen (for eksempel en bank som utfører en pengeoverføring) å vite om forespørselen ble gjort frivillig. av brukeren eller av et CSRF-angrep.
Angrepet fungerer fordi hvis målnettstedet bare bruker informasjonskapsler for å autentisere offerforespørsler, vil forespørsler initiert av angriperens kode ha samme legitime tilgangslegitimasjon som brukerinitierte forespørsler.
Generelt er løsningen på CSRF å introdusere et skjult skjemafelt hvis verdi brukes til å utføre autentisering, og ikke bare via informasjonskapsler, på forespørsler som kan ha varige effekter. Å sjekke HTTP-henvisningshodet kan også hjelpe.
"JavaScript-kapring" er en type CSRF-angrep der en <script>-tag på angriperens nettsted utnytter en sårbarhet på siden til offerets nettsted som får den til å returnere privat informasjon, i form av JSON- eller JavaScript-kode. Mulige løsninger er:
I JavaScript blir det nødvendig å ha en debugger når du utvikler store, ikke-trivielle applikasjoner. Siden det kan være implementeringsforskjeller mellom ulike nettlesere (spesielt når det gjelder DOM), er det nyttig å ha tilgang til en debugger for hver av nettleserne som webapplikasjonen vår vil målrette mot. [ 52 ]
Nettfeilsøkere er tilgjengelige for Internet Explorer, Firefox, Safari, Google Chrome og Opera. [ 53 ]
Det er tre debuggere tilgjengelig for Internet Explorer : Microsoft Visual Studio er den mest avanserte av de tre, tett fulgt av Microsoft Script Editor (en komponent av Microsoft Office ) [ 54 ] og til slutt Microsoft Script Debugger, som er mye mer grunnleggende enn den andre to, selv om det er gratis. Den gratis Microsoft Visual Web Developer Express IDE tilbyr en begrenset versjon av JavaScript-feilsøkingsfunksjonaliteten i Microsoft Visual Studio. Internet Explorer har inkludert utviklerverktøy siden versjon 8 (vises ved å trykke på F12-tasten). Nettapplikasjoner i Firefox kan feilsøkes ved å bruke Firebug -tillegget eller den gamle Venkman-feilsøkeren. Firefox har også en grunnleggende feilkonsoll innebygd, som logger og evaluerer JavaScript. Den logger også CSS- feil og advarsler. Opera inkluderer et sett med verktøy kalt Dragonfly. [ 55 ] WebKits nettinspektør inkluderer en JavaScript debugger [ 56 ] brukt i Safari , sammen med en modifisert versjon av Google Chrome .
Det finnes noen hjelpeverktøy for feilsøking, også skrevet i JavaScript og bygget for å kjøre på nettet. Et eksempel er JSLint -programmet , utviklet av Douglas Crockford , som har skrevet mye om språket. JSLint analyserer JavaScript-kode slik at den samsvarer med et sett med standarder og retningslinjer for å sikre riktig funksjonalitet og vedlikehold.