Break после каждого case
, и default
в конце.
var inspect_me = 0, | |
result = ''; | |
switch (inspect_me) { | |
case 0: | |
result = "zero"; | |
break; | |
case 1: | |
result = "one"; | |
break; | |
default: | |
result = "unknown"; | |
} |
Использовать явное сравнение ===
и !==
, для избегания приведения типов
var zero = 0; | |
if (zero === false) { | |
// не выполнится | |
} | |
// антипаттерн | |
if (zero == false) { | |
// выполнится... | |
} |
Избегайте eval
, когда есть такая возможность
// антипаттерн | |
var property = "name"; | |
alert(eval("obj." + property)); | |
// предпочтительно | |
var property = "name"; | |
alert(obj[property]); |
Выбирайте конструктор функции, вместо eval
. Либо оберните eval
функцией, чтобы не создавать глобальных переменных.
console.log(typeof un); // "undefined" | |
console.log(typeof deux); // "undefined" | |
console.log(typeof trois); // "undefined" | |
var jsstring = "var un = 1; console.log(un);"; | |
eval(jsstring); // "1" | |
jsstring = "var deux = 2; console.log(deux);"; | |
new Function(jsstring)(); // "2" | |
jsstring = "var trois = 3; console.log(trois);"; | |
(function () { | |
eval(jsstring); | |
}()); // "3" | |
console.log(typeof un); // "number" | |
console.log(typeof deux); // "undefined" | |
console.log(typeof trois); // "undefined" |
Eval
может модифицировать переменные вне своей области. Используйте Function
(new Function
и Function
идентичны), как более безопасный вариант.
(function () { | |
var local = 1; | |
eval("local = 3; console.log(local)"); // 3 | |
console.log(local); // 3 | |
}()); | |
(function () { | |
var local = 1; | |
Function("console.log(typeof local);")(); // undefined | |
}()); |
// антипаттерн | |
setTimeout("myFunc()", 1000); | |
setTimeout("myFunc(1, 2, 3)", 1000); | |
// предпочтительно | |
setTimeout(myFunc, 1000); | |
setTimeout(function () { | |
myFunc(1, 2, 3); | |
}, 1000); |
Используйте параметр для указания системы счисления.
var month = "06", | |
year = "09"; | |
month = parseInt(month, 10); | |
year = parseInt(year, 10); | |
//Альтернативный вариант: | |
+"08" // результат 8 |