JavaScript Best Practices
- Forrige side JS style guide
- Næste side JS fejl
Undgå globale variabler,new
,===
,eval()
Undgå globale variabler
Brug så få globale variabler som muligt.
Det inkluderer alle datatyper, objekter og funktioner.
Globale variabler og funktioner kan overskrives af andre scripts.
Brug lokale variabler i stedet og lær at brugelukket.
Deklarer altid lokale variabler
Alle variabler, der bruges i funktionen, bør deklareres somlokalevariabler
lokale variablermågennem var Brug nøgleord til deklaration, ellers vil de blive globale variabler.
Strengt mode tillader ikke udeklarerede variabler.
Deklaration i toppen
En god kodepraksis er at placere alle deklarationer i toppen af hvert script eller funktion.
Fordelene ved dette er:
- Giver mere pænt kode
- Giver en god placering til at finde lokale variabler
- Det er lettere at undgå unødvendige globale variabler
- Reducerer sandsynligheden for unødvendige gentagne deklarationer
// Deklaration i toppen var firstName, lastName, price, discount, fullPrice; // Brug senere firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
Det kan også bruges til løkkevariabler:
// Deklaration i toppen var i; // Brug senere for (i = 0; i < 5; i++) {
Som standard vil JavaScript flytte alle deklarerede variabler til toppen (JavaScript hoisting).
Initialisering af variabler
Det er en god vane at initialisere variabler, når du deklarerer dem.
Fordelene ved dette er:
- Kod, der er mere pæn
- Initialiser variabler på et separat sted
- Undgå udefinerede værdier
// Udfør deklaration og initialisering i begyndelsen var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
Variabelinitialisering hjælper os med at forstå forventet brug og forventet datatyper.
Deklarer ikke tal, strenge eller boolean objekter
Vær altid opmærksom på, at tal, strenge eller boolean værdier er primitivværdier, ikke objekter.
Hvis du deklarerer disse typer som objekter, kan det bremse udførelsen og forårsage irriterende bivirkninger:
Eksempel
var x = "Bill"; var y = new String("Bill"); (x === y) // Resultatet er false, fordi x er en streng, og y er et objekt.
Eller endnu værre:
Eksempel
var x = new String("Bill"); var y = new String("Bill"); (x == y) // Resultatet er false, fordi du ikke kan sammenligne objekter.
Undgå brug af new Object()
- Brug {} i stedet for new Object()
- Brug "" i stedet for new String()
- Brug 0 i stedet for new Number()
- Brug false i stedet for new Boolean()
- Brug [] i stedet for new Array()
- Brug /()/ i stedet for new RegExp()
- Brug function (){} i stedet for new Function()
Eksempel
var x1 = {}; // Ny objekt var x2 = ""; // Ny primitiv strengværdi var x3 = 0; // Ny primitiv numerisk værdi var x4 = false; // Ny primitiv boolean værdi var x5 = []; // Ny array var x6 = /()/; // Ny regulær udtryksobjekt var x7 = function(){}; // Ny funktion
Vær opmærksom på automatisk typekonvertering
Vær opmærksom på, at tal kan konverteres til streng uden at man får det med sig. NaN
(Not a Number).
JavaScript er en løs type. Variabler kan indeholde forskellige datatyper, og variabler kan ændre deres datatyper:
Eksempel
var x = "Hello"; // typeof x er streng x = 5; // ændr typeof x til numerisk
Hvis der udføres matematisk operation, kan JavaScript konvertere værdier til streng:
Eksempel
var x = 5 + 7; // x.valueOf() er 12, typeof x er numerisk var x = 5 + "7"; // x.valueOf() er 57, typeof x er streng var x = "5" + 7; // x.valueOf() er 57, typeof x er streng var x = 5 - 7; // x.valueOf() er -2, typeof x er numerisk var x = 5 - "7"; // x.valueOf() er -2, typeof x er numerisk var x = "5" - 7; // x.valueOf() er -2, typeof x er numerisk var x = 5 - "x"; // x.valueOf() er NaN, typeof x er numerisk
Når man trækker tal fra tal, opstår der ingen fejl, men returneres NaN
(Ikke et tal):
Eksempel
"Hello" - "Dolly" // Returnerer NaN
Brug === til sammenligning
==
sammenligningsoperatorer udfører altid en typekonvertering før sammenligning (for at matche typer).
===
operatorer tvunget sammenligning af værdier og typer:
Eksempel
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Brug Parameter Defaults
hvis der mangler en parameter, når funktionen kaldes, vil værdien for den manglende parameter blive sat til undefined
.
undefined
værdier kan ødelægge din kode. At sætte standardværdier til parametre er en god vane.
Eksempel
function myFunction(x, y) { hvis (y === undefined) { y = 0; } }
BrugFunktionparametreLæs mere om funktionparametre i dette kapitel.
Brug default til at afslutte switch
Brug default
for at afslutte din switch
Sætning. Selvom du mener, at det ikke er nødvendigt.
Eksempel
switch (new Date().getDay()) { case 0: day = "Søndag"; break; case 1: day = "Tirsdag"; break; case 2: day = "Mandag"; break; case 3: day = "Onsdag"; break; case 4: day = "Torsdag"; break; case 5: day = "Fredag"; break; case 6: day = "Lørdag"; break; default: day = "Ukendt"; }
Undgå brug af eval()
eval()
Funktioner bruges til at tillade tekst som kode. I næsten alle tilfælde er det ikke nødvendigt at bruge det.
Fordi det tillader kørsel af vilkårlig kode, betyder det også, at der er sikkerhedsmæssige problemer.
- Forrige side JS style guide
- Næste side JS fejl