JavaScript Bästa Praktiken
- Föregående sida JS-stilguide
- Nästa sida JS-fel
请避免全局变量、new
、===
、eval()
始终声明局部变量
所有在函数中使用的变量应该被声明为局部变量。
局部变量必须通过 var 关键词来声明,否则它们将变成全局变量。
严格模式不允许未声明的变量。
在顶部声明
一项好的编码习惯是把所有声明放在每段脚本或函数的顶部。
Fördelen med detta är:
- 获得更整洁的代码
- 提供了查找局部变量的好位置
- 更容易避免不需要的全局变量
- 减少不需要的重新声明的可能性
// 在顶部声明 var firstName, lastName, price, discount, fullPrice; // 稍后使用 firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
也可以用于循环变量:
// 在顶部声明 var i; // 稍后使用 for (i = 0; i < 5; i++) {
默认地,JavaScript 会将所有声明移至顶部(JavaScript hoisting)。
初始化变量
Det är en bra vana att initialisera variabler när du deklarerar dem.
Fördelen med detta är:
- Mer ordnad kod
- Initialisera variabler på en särskild plats
- Undvik okända värden
// Förklara och initialisera i början var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
Variabelinitialisering gör det möjligt för oss att förstå förväntad användning och förväntad datatyp.
Deklarera inte nummer, strängar eller booleanobjekt
Var alltid medveten om att nummer, strängar eller booleanvärden är ursprungliga värden, inte objekt.
Om du deklarerar dessa typer som objekt kommer det att försena körningen och skapa irriterande biverkningar:
Exempel
var x = "Bill"; var y = new String("Bill"); (x === y) // Resultatet är false, eftersom x är en sträng och y är ett objekt.
eller ännu värre:
Exempel
var x = new String("Bill"); var y = new String("Bill"); (x == y) // Resultatet är false, eftersom du inte kan jämföra objekt.
Använd inte new Object()
- Använd {} istället för new Object()
- Använd "" istället för new String()
- Använd 0 istället för new Number()
- Använd false istället för new Boolean()
- Använd [] istället för new Array()
- Använd /()/ istället för new RegExp()
- Använd function (){} istället för new Function()
Exempel
var x1 = {}; // Ny objekt var x2 = ""; // Ny ursprunglig sträng var x3 = 0; // Ny ursprunglig numerär var x4 = false; // Ny ursprunglig布尔值 var x5 = []; // Ny array var x6 = /()/; // Ny reguljärt uttryck var x7 = function(){}; // Ny funktion
varse automatisk typomvandling
Vänligen var medveten om att nummer kan oavsiktligt omvandlas till strängar eller NaN
(Not a Number).
JavaScript är en slapp typ. Variabler kan innehålla olika datatyper och kan ändra sin datatyp:
Exempel
var x = "Hello"; // typeof x är sträng x = 5; // ändra typeof x till numerisk
om du utför matematiska operationer, kan JavaScript konvertera tal till strängar:
Exempel
var x = 5 + 7; // x.valueOf() är 12, typeof x är numerisk var x = 5 + "7"; // x.valueOf() är 57, typeof x är sträng var x = "5" + 7; // x.valueOf() är 57, typeof x är sträng var x = 5 - 7; // x.valueOf() är -2, typeof x är numerisk var x = 5 - "7"; // x.valueOf() är -2, typeof x är numerisk var x = "5" - 7; // x.valueOf() är -2, typeof x är numerisk var x = 5 - "x"; // x.valueOf() är NaN, typeof x är numerisk
att subtrahera strängar med varandra orsakar inte ett fel utan returnerar NaN
(Not a Number):
Exempel
"Hello" - "Dolly" // returnerar NaN
Använd === för jämförelse
==
jämförelseoperatorer konverterar alltid typerna innan de jämförs (för att matcha typerna).
===
operatorer jämför alltid värden och typer tvingande:
Exempel
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Använd Parameter Defaults
om en parameter saknas när funktionen anropas, så kommer värdet för den frånvarande parametern att sättas till undefined
。
undefined
värden kan förstöra din kod. Att sätta standardvärden för parametrar är en bra vana.
Exempel
function myFunction(x, y) { om (y === undefined) { y = 0; } }
LäsFunktionens parametrarLäs mer om funktionens parametrar i detta kapitel.
Använd default för att avsluta switch
Använd default
för att avsluta din switch
Sats. Även om du tror att du inte behöver det.
Exempel
switch (new Date().getDay()) { fall 0: day = "Lördag"; break; fall 1: day = "Söndag"; break; fall 2: day = "Tisdag"; break; fall 3: day = "Måndag"; break; fall 4: day = "Onsdag"; break; fall 5: day = "Torsdag"; break; fall 6: day = "Fredag"; break; default: day = "Okänd"; }
Undvik att använda eval()
eval()
Funktioner används för att tillåta text som kod. I nästan alla fall är det inte nödvändigt att använda det.
Eftersom det tillåter att vilket som helst kod körs, innebär det också säkerhetsproblem.
- Föregående sida JS-stilguide
- Nästa sida JS-fel