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.
ECMA-262. Standarden for javaScript.
Oversigt over hvad Google mener man må og ikke ikke må i javaScript.
Konventioner for kodning med javaScript.
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:
- KommandoerCa. 20 kommandoer (statements) der kan opdeles i 2 grupper:
- ErklæringerGruppen 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.
- OperatorerCa. 50 operatorer, der - betragtet meget bredt - udgør de "regneregler" der er til rådighed.
- ObjekterCa. 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 objekterObjekter med kode til internt brug i javaScript.
- Browser objekterObjekter med kode til interaktion med browseren. (BOM).
- HTML DOM objekterObjekter med kode til interaktion med HTML-koden.
- Reserverede ordDer 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:
- I HTML-dokumentKoden 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.
- På egen serverFordele og ulemper fra ovenfor er som hovedregel vendt.
- EksterntDer 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:
- STORE / små bogstaverjavaScript er "case"-sensitive". a og A er derfor 2 forskellige identer. Det betyder, at man i praksis som udgangspunkt bruger små bogstaver.
- Flerleds ordVed identer der består af flere led kan man vælge mellem 3 principper: "sammenhængendesmåbogstaver", "adskillelse_med_understregning" og "kamelPrincippet".
- MellemrumDer må ikke være mellem rum i navne på variabler.
- BegyndelsesbogstavNavne på variabler skal begynde med et bogstav. "$" og "_" kan også benyttes, men det frarådes.
- Hvilke bogstaverKun bogstaverne a-z og A-Z bør anvendes. æ, ø, å og Æ, Ø, Å må således ikke anvendes.
- TalTal kan anvendes som tegn 2 og derefter.
- ForståelseNavne 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.
- KonstanterSå 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 :
- 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 |
break | case | catch | continue |
debugger | default | delete | do |
else | finally | for | function |
if | in | instanceof | new |
return | switch | this | throw |
try | typeof | var | void |
while | with | | |
Mulige fremtidige reserverede ord |
abstract | boolean | byte | char |
class | double | enum | extends |
final | float | goto | implements |
int | interface | long | native |
package | private | protected | public |
short | static | super | synchronized |
throws | transient | volatile | |
Mulige reserverede ord til javaScript 2.0 |
as | const | export | import |
is | use | | |
Globale properties |
Infinity | NaN | undefined | |
Globale metoder |
decodeURI | decodeURIComponent | encodeURI | encodeURIComponent |
escape | eval | isFinite | isNaN |
parseFloat | parseInt | unescape | |
Klasser og objekter i de fleste browsere |
Anchor | anchors | applet | applets |
Area | Array | Body | Button |
Checkbox | Date | document | Error |
EvalError | FileUpload | Form | forms |
frame | frames | Function | Hidden |
History | history | Image | images |
Link | links | location | Math |
MimeType | mimetypes | navigator | Number |
Object | Option | options | Password |
Plugin | plugins | Radio | RangeError |
ReferenceError | RegExp | Reset | screen |
Script | Select | String | Style |
StyleSheet | Submit | SyntaxError | Text |
Textarea | TypeError | URIError | window |
Window objekter |
closed | Components | content | controllers |
crypto | defaultStatus | directories | document |
frames | history | innerHeight | innerWidth |
length | location | locationbar | menubar |
name | navigator | opener | outerHeight |
outerWidth | pageXOffset | pageYOffset | parent |
personalbar | pkcs11 | prompter | screen |
screenX | screenY | scrollbars | scrollX |
scrollY | self | statusbar | toolbar |
top | window | | |
Metoder |
alert | back | blur | captureevents |
clearInterval | clearTimeout | close | confirm |
dump | escape | focus | forward |
getAttention | getSelection | home | moveBy |
moveTo | open | print | prompt |
releaseevents | resizeBy | resizeTo | scroll |
scrollBy | scrollByLines | scrollByPages | scrollTo |
setCursor | setInterval | setTimeout | sizeToContents |
stop | unescape | updateCommands | |
Hændelser |
Alle forekomster af "on...." der kan forekomme som hændelse (event) |
Nøgleord i visse browsere |
all | asign | clientinformation | element |
embed | embeds | event | frameRate |
getClass | java | JavaArray | JavaClass |
JavaObject | JavaPackage | layer | layers |
offscreenBuffering | opener | packages | secure |
status | sun | taint | toSource |
toString | untaint | valueOf | |
|