javascript Om javaScript




Beskrivelsen af javaScript påregnes forbedret i løbet af 2016.


javaScript (med en fortid som hhv. Mocha og LiveScript) har siden 1995 været det programmeringssprog, der via javaScript- programmer / -scripts har været anvendt til at gøre HTML-sider dynamiske.


javaScript kaldes et objekt orienteret programmeringssprog (OOP) selvom det ikke anvender klasser.


javaScript er et såkaldt "loosely typed" programmeringssprog: Ved definition af variablerne skal det ikke defineres hvilken type data, de hver især skal indeholde (string, integer, boolean etc). Derimod er det typisk for "backend" programmeringssprog at være "strongly typed" så hver enkelt variabel kun kan indeholde data af den pågældende type. Begge metoder har deres fordele og ulemper.


x ECMA-262. Standarden for javaScript.

x Oversigt over hvad Google mener man må og ikke ikke må i javaScript.

x Konventioner for kodning med javaScript.

x De 11 javaScript fejl du laver.



Struktur


De værktøjer javaScript stiller til rådighed til opbygning af programmer kan (stort set) opdeles i 4 grupper:


  1. Kommandoer
    Ca. 20 kommandoer (statements) der kan opdeles i 2 grupper:
    • Erklæringer
      Gruppen består af:
      • tab-kommandoen, der giver programmøren mulighed for at definere identer til lagring af data, mens de ikke er under behandling i programmet
      • function-kommandoen, der giver programmøren mulighed for at definere identer til opbygning af funktioner - blokke med kode.
      • const-kommnandoen er formentlig snart til rådighed i alle væsentlige browsere. Den giver programmøren mulighed for at definere identer for konstanter, der - til forskel fra var-identer ikke må kunne ændres ved påvirkning med javaScript-kode.
    • "Resten"
      De øvrige kommandoer (løkker etc.) anvendes til at opbygge "sætninger", der udgør den egentlige programmering.
  2. Operatorer
    Ca. 50 operatorer, der - betragtet meget bredt - udgør de "regneregler" der er til rådighed.
  3. Objekter
    Ca. 50 (kode-)objekter med 3 forskellige tilknytningsforhold. Objekterne indeholder et bibliotek af metoder, parametre og hændelser (events). Metoderne er funktionsmæssigt sammenlignelige med brugerdefinerede funktioner. Brugen af metoderne, parametrene og hændelserne gør det lettere at være programmør.
    • javaScript objekter
      Objekter med kode til internt brug i javaScript.
    • Browser objekter
      Objekter med kode til interaktion med browseren. (BOM).
    • HTML DOM objekter
      Objekter med kode til interaktion med HTML-koden.
  4. Reserverede ord
    Der er en række ord en programmør ikke må anvende under opbygningen af javaScript-programmer. Disse er reserveret til nuværende eller fremtidig brug i javaScript programmeringssproget. De er nævnt nedersst på denne side.



Placering

Den fysiske JavaScript-kode kan placeres på 3 forskellige måder:

  1. I HTML-dokument
    Koden placeres på den enkelte side - som oftest i head-delen, men kan også være placeret i body-delen. Det er imidlertid en dårlig ide, der frarådes fordi:
    • Siden bliver mere uoverskuelig
    • Et script, der skal bruges på flere sider, skal indlægges på hver side.
    • Browserne casher altid javaScript-filer, men ofte ikke HTML-sider. Placering på HTML-sider vil derfor medføre større overførsel af data.
  2. På egen server
    Fordele og ulemper fra ovenfor er som hovedregel vendt.
  3. Eksternt
    Der er idag intet teknisk til hinder for at jave javaScript liggende på en server "ude i den store verden". Fordelen er, at trafikken til og fra den ikke vil tære på egen upload-hastighed. Mest kendt er arrangementet fra "bibliotekssystemer" som jQuery hvor brugerne typisk henter jQuery-filerne fra såkaldte CDN-udbydere (Content Delivery Network).



Brugerdefinerede navne


Ved etableringen af brugerdefinerede navne på variabler og funktioner er der en række standards, der skal / bør overholdes:

  1. STORE / små bogstaver
    javaScript er "case"-sensitive". a og A er derfor 2 forskellige identer. Det betyder, at man i praksis som udgangspunkt bruger små bogstaver.
  2. Flerleds ord
    Ved identer der består af flere led kan man vælge mellem 3 principper: "sammenhængendesmåbogstaver", "adskillelse_med_understregning" og "kamelPrincippet".
  3. Mellemrum
    Der må ikke være mellem      rum i navne på variabler.
  4. Begyndelsesbogstav
    Navne på variabler skal begynde med et bogstav. "$" og "_" kan også benyttes, men det frarådes.
  5. Hvilke bogstaver
    Kun bogstaverne a-z og A-Z bør anvendes. æ, ø, å og Æ, Ø, Å må således ikke anvendes.
  6. Tal
    Tal kan anvendes som tegn 2 og derefter.
  7. Forståelse
    Navne på variabler bør være korte, men ikke kortere end at de er "forståelige". "Koder" såsom a, b, c bør ikke anvendes.
  8. Konstanter
    Så længe "const" ikke understøttes af alle browsere" har det været en uofficiel praksis at konstanter håndteres som variabler NAVNGIVET MED STORE BOGSTAVER.



Objekt- og funktionskald


Objekter og funktioner kan kaldes på følgende måder:


  • dot notation (især objekter)
    For at inddrage en indbygget metode eller property i js-kode skal man kalde den. Det kan ikke gøres direkte, men via det objekt, hvori den ønskede ident er placeret. Til dette formål anvendes en måde kaldet "dot syntax".
    En dot-sxyntax kan se sådan ud:
    • document.write("yourtext");
    • document.formName.textBoxName.value;
    • onclick=alert(document.example.input.value);
    • document.write(document.getElementById(xx).background;
  • Funktioner
    Funktioner kan kaldes på følgende 3 måder:
    • funktionsnavn (variabler);
    • window.funktionsnavn (variabler);
    • object.onEventnavn = funktionsnavn;



Sætninger.


Et javaScript program opbygges ved hjælp af sætninger.


En sætning starter altid med:
-    en kommando,
-    en variabel eller
-    en dot.syntaks.
og slutter altid med
-    et semikolon ";".< /p>



Lokale og globale variabler.


Variabler kan enten være lokale eller globale:

  • Lokale
    Lokale variabler er definerede og bruges indenfor rammerne af en funktion. De får tilført evt. værdi når funktionen aktiveres ved et funktionskald, og mister deres data igen når funktionens aktivitet ophører. Der er ingenting udefra, der kan komme i kontakt med dem. Den samme variable kan derfor forekomme i flere funktioner uden at der opstår problemer.
  • Globale
    Globale variabler er definerede udenfor rammerne af funktioner - sammen med andre variabler incl. globale variabler fra evt. flere javaScript programmer eller indlejringer i HTML-kode. Hvis der er to variabler med samme navn kan de begge - eller den forkerte - blive opdateret i utide. Globale variabler kan således være et problem. Globale variabler kan på den anden side ikke undværes, da det er dem der hhv. leverer data til parametrene i -funktioner og modtager evt. "return"-data fra funktioner. Problemet med "dobbelte" variabler kan dog begrænses ved at tilrettelægge sig gode debug-vaner.



Navngivne og anonyme funktioner.


Funktioner kan være navngivne eller anonyme x:


  • Navngivne
    En navngiven funktion defineres sådan:
    function flyToTheMoon() {
    alert("Zoom! Zoom! Zoom!"); }
    flyToTheMoon();
  • Anonyme
  • En anonym funktion defineres sådan:
    var flyToTheMoon = function() {
    alert("Zoom! Zoom! Zoom!"); }
    flyToTheMoon();
    Anonyme funktioner anvendes inde i navngivne funktioner. Typisk til at håndtere en del af funktionaliteten der hensigtsmæssigt kan isoleres - og især hvis den skal udføres flere gange inde i den navngivne funktion.



Reserverede ord:

En række ord må ikke anvendes / bør undgås til brugerdefinerede identer (variabler, funktioner, metoder og objekter). Disse er:


Aktuelle reserverede ord
breakcasecatchcontinue
debuggerdefaultdeletedo
elsefinallyforfunction
ifininstanceofnew
returnswitchthisthrow
trytypeofvarvoid
whilewith
Mulige fremtidige reserverede ord
abstractbooleanbytechar
classdoubleenumextends
finalfloatgotoimplements
intinterfacelongnative
packageprivateprotectedpublic
shortstaticsupersynchronized
throwstransientvolatile
Mulige reserverede ord til javaScript 2.0
asconstexportimport
isuse
Globale properties
InfinityNaNundefined
Globale metoder
decodeURIdecodeURIComponentencodeURIencodeURIComponent
escapeevalisFiniteisNaN
parseFloatparseIntunescape
Klasser og objekter i de fleste browsere
Anchoranchorsappletapplets
AreaArrayBodyButton
CheckboxDatedocumentError
EvalErrorFileUploadFormforms
frameframesFunctionHidden
HistoryhistoryImageimages
LinklinkslocationMath
MimeTypemimetypesnavigatorNumber
ObjectOptionoptionsPassword
PluginpluginsRadioRangeError
ReferenceErrorRegExpResetscreen
ScriptSelectStringStyle
StyleSheetSubmitSyntaxErrorText
TextareaTypeErrorURIErrorwindow
Window objekter
closedComponentscontentcontrollers
cryptodefaultStatusdirectoriesdocument
frameshistoryinnerHeightinnerWidth
lengthlocationlocationbarmenubar
namenavigatoropenerouterHeight
outerWidthpageXOffsetpageYOffsetparent
personalbarpkcs11prompterscreen
screenXscreenYscrollbarsscrollX
scrollYselfstatusbartoolbar
topwindow
Metoder
alertbackblurcaptureevents
clearIntervalclearTimeoutcloseconfirm
dumpescapefocusforward
getAttentiongetSelectionhomemoveBy
moveToopenprintprompt
releaseeventsresizeByresizeToscroll
scrollByscrollByLinesscrollByPagesscrollTo
setCursorsetIntervalsetTimeoutsizeToContents
stopunescapeupdateCommands
Hændelser
Alle forekomster af "on...." der kan forekomme som hændelse (event)
Nøgleord i visse browsere
allasignclientinformationelement
embedembedseventframeRate
getClassjavaJavaArrayJavaClass
JavaObjectJavaPackagelayerlayers
offscreenBufferingopenerpackagessecure
statussuntainttoSource
toStringuntaintvalueOf






















x
x