bxnotes.ru
  • конспекты
  • статьи
Angular в конспектах Angular Bitrix в конспектах Bitrix Git в конспектах Git Js в конспектах Js Linux в конспектах Linux MySQL в конспектах MySQL Php в конспектах Php React в конспектах React
Angular в статьях Angular Bitrix в статьях Bitrix Git в статьях Git Js в статьях Js Linux в статьях Linux MySQL в статьях MySQL Php в статьях Php React в статьях React
Главная
Статьи
js
Хороший стиль
Статья из конспекта "JavaScript Patterns":
  • Концепции JavaScript
  • ECMAScript 5
  • JSLint
  • Написание хорошего кода
  • Глобальные переменные
  • Доступ к глобальному объекту
  • Паттерн один var
  • Цикл For
  • Цикл for in
  • Добавление свойств
  • Хороший стиль
  • Оформлении кода
  • Объекты
  • Паттерны создания объектов
  • Массивы
  • JSON
  • Регулярные выражения
  • Primitive wrapper objects
  • Error Objects
  • Функции

Хороший стиль

Хорошие практики использования конструкций и операторов Java Script

switch compare eval() setInterval() setTimeout() parseInt()
Следование хорошим практикам сделает JS код чище и поможет предотвратить возможные ошибки и трудноуловимые баги.
Источник — JavaScript Patterns:
В конспекте →

switch

Break после каждого case, и default в конце.

var inspect_me = 0,
result = '';
switch (inspect_me) {
case 0:
result = "zero";
break;
case 1:
result = "one";
break;
default:
result = "unknown";
}
hosted with ❤ by bxnotes

Сравнение

Использовать явное сравнение === и !==, для избегания приведения типов

var zero = 0;
if (zero === false) {
// не выполнится
}
// антипаттерн
if (zero == false) {
// выполнится...
}
hosted with ❤ by bxnotes

eval

Избегайте eval, когда есть такая возможность

// антипаттерн
var property = "name";
alert(eval("obj." + property));
// предпочтительно
var property = "name";
alert(obj[property]);
hosted with ❤ by bxnotes

Выбирайте конструктор функции, вместо 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"
hosted with ❤ by bxnotes

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
}());
hosted with ❤ by bxnotes

setInterval(), setTimeout()

// антипаттерн
setTimeout("myFunc()", 1000);
setTimeout("myFunc(1, 2, 3)", 1000);
// предпочтительно
setTimeout(myFunc, 1000);
setTimeout(function () {
myFunc(1, 2, 3);
}, 1000);
hosted with ❤ by bxnotes

parseInt()

Используйте параметр для указания системы счисления.

var month = "06",
year = "09";
month = parseInt(month, 10);
year = parseInt(year, 10);
//Альтернативный вариант:
+"08" // результат 8
hosted with ❤ by bxnotes

Источник — JavaScript Patterns:
В конспекте →
Опубликовано 21.09.2018

© 2017–2018 bxnotes
конспекты веб разработчика
feedback@bxnotes.ru