JavaScript Best Practices
- Vorige Pagina JS Stijlgids
- Volgende Pagina JS Fouten
请避免全局变量、new
、===
、eval()
始终声明局部变量
所有在函数中使用的变量应该被声明为局部变量。
局部变量必须通过 var 关键词来声明,否则它们将变成全局变量。
严格模式不允许未声明的变量。
在顶部声明
一项好的编码习惯是把所有声明放在每段脚本或函数的顶部。
Het voordeel hiervan is dat:
- 获得更整洁的代码
- 提供了查找局部变量的好位置
- 更容易避免不需要的全局变量
- 减少不需要的重新声明的可能性
// 在顶部声明 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)。
初始化变量
Het is een goede gewoonte om variabelen te initialiseren bij hun declaratie.
Het voordeel hiervan is dat:
- Meer nette code
- Initialiseer variabelen op een aparte locatie
- Voorkom ongedefinieerde waarden
// Declareer en initialiseer in het begin var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
Variabele initialisatie helpt ons om de verwachte gebruik en het verwachte datatype te begrijpen.
Meld geen getallen, strings of boolean objecten
Zie altijd getallen, strings of booleans als primitieve waarden, niet als objecten.
Als je deze typen als objecten declareert, kan het de uitvoersnelheid vertragen en vervelende neveneffecten veroorzaken:
Voorbeeld
var x = "Bill"; var y = new String("Bill"); (x === y) // Resultaat is false, omdat x een string is en y een object.
Of zelfs erger:
Voorbeeld
var x = new String("Bill"); var y = new String("Bill"); (x == y) // Resultaat is false, omdat je objecten niet kunt vergelijken.
Gebruik geen new Object()
- Gebruik {} in plaats van new Object()
- Gebruik "" in plaats van new String()
- Gebruik 0 in plaats van new Number()
- Gebruik false in plaats van new Boolean()
- Gebruik [] in plaats van new Array()
- Gebruik /()/ in plaats van new RegExp()
- Gebruik function (){} in plaats van new Function()
Voorbeeld
var x1 = {}; // Nieuw object var x2 = ""; // Nieuwe primitieve stringwaarde var x3 = 0; // Nieuwe primitieve getalwaarde var x4 = false; // Nieuwe primitieve booleanwaarde var x5 = []; // Nieuwe arrayobject var x6 = /()/; // Nieuwe reguliere expressie var x7 = function(){}; // Nieuwe functieobject
Wees je bewust van de automatische typconversie
Wees je bewust van het feit dat getallen onverwacht kunnen worden omgezet naar strings of NaN
(Not a Number).
JavaScript behoort tot de losse typen. Variabelen kunnen verschillende datatypes bevatten en kunnen hun datatype veranderen:
Voorbeeld
var x = "Hello"; // typeof x is string x = 5; // wijzig typeof x in numerisch
Bij wiskundige berekeningen kan JavaScript getallen omzetten naar strings:
Voorbeeld
var x = 5 + 7; // x.valueOf() is 12, typeof x is numerisch var x = 5 + "7"; // x.valueOf() is 57, typeof x is string var x = "5" + 7; // x.valueOf() is 57, typeof x is string var x = 5 - 7; // x.valueOf() is -2, typeof x is numerisch var x = 5 - "7"; // x.valueOf() is -2, typeof x is numerisch var x = "5" - 7; // x.valueOf() is -2, typeof x is numerisch var x = 5 - "x"; // x.valueOf() is NaN, typeof x is numerisch
Bij het aftrekken van strings, ontstaat er geen fout, maar wordt er NaN
(Not a Number):
Voorbeeld
"Hello" - "Dolly" // retourneert NaN
Gebruik === voor vergelijking
==
de vergelijkingsopters hebben altijd een typeconversie voor de vergelijking uitgevoerd (om de typen te matchen).
===
de operator compelt een vergelijking tussen waarde en type af te dwingen:
Voorbeeld
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Gebruik Parameter Defaults
als een parameter ontbreekt bij het aanroepen van de functie, wordt de waarde van deze ontbrekende parameter ingesteld als undefined
.
undefined
waarden kunnen uw code beschadigen. Het instellen van standaardwaarden voor parameters is een goede gewoonte.
Voorbeeld
functie myFunction(x, y) { als (y === undefined) { y = 0; } }
RaadpleegFunctieparametersIn dit hoofdstuk lees je meer over functieparameters.
om met default de switch te beëindigen
Gebruik standaard
om je switch
Zinnen. Zelfs als je denkt dat het niet nodig is.
Voorbeeld
switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; standaard: day = "Unknown"; }
Gebruik eval() vermijden
eval()
Functionen worden gebruikt om tekst als code toe te laten. In bijna alle gevallen is het niet nodig om het te gebruiken.
Omdat het toestaan van het uitvoeren van willekeurige code ook betekent dat er veiligheidsproblemen kunnen zijn.
- Vorige Pagina JS Stijlgids
- Volgende Pagina JS Fouten