Лучшая практика JavaScript
- Предыдущая страница JS руководство по стилю
- Следующая страница JS ошибки
Избегайте глобальных переменных,new
,=====
,eval()
Избегайте глобальных переменных
Старайтесь использовать глобальные переменные как можно меньше.
Это включает все типы данных, объекты и функции.
Глобальные переменные и функции могут быть перекрыты другими скриптами.
Используйте локальные переменные и изучите, как их использоватьКлوزуры。
Всегда объявляйте локальные переменные
Все переменные, используемые в функции, должны быть объявлены каклокальныепеременные
локальные переменныенеобходимочерез var Используйте ключевые слова для объявления, в противном случае они станут глобальными переменными.
Строгий режим не позволяет переменным, не объявленным.
Объявление в верхней части
Хорошая практика кодирования - помещать все объявления в верхнюю часть каждого скрипта или функции.
Преимущества этого таковы:
- Получите более чистый код
- Предоставляет хорошее место для поиска локальных переменных
- Легче избежать ненужных глобальных переменных
- Уменьшает вероятность повторного объявления
// Объявление в верхней части 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 подъем).
Инициализация переменных
Хорошая привычка инициализировать переменные при их объявлении.
Преимущества этого таковы:
- код становится более чистым
- инициализируйте переменные в отдельном месте
- избегайте неопределенных значений
// производите объявления и инициализацию в начале var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
Инициализация переменных позволяет нам понять предполагаемое использование и ожидаемый тип данных.
Пожалуйста, не объявляйте объекты чисел, строк или булевых значений
Пожалуйста, всегда рассматривайте числа, строки или булевы значения как примитивы, а не как объекты.
Если объявлять эти типы как объекты, это может замедлить выполнение и вызвать неприятные побочные эффекты:
Пример
var x = "Bill"; var y = new String("Bill"); (x === y) // результат false, потому что x является строкой, а y является объектом.
или даже хуже:
Пример
var x = new String("Bill"); var y = new String("Bill"); (x == y) // результат false, потому что вы не можете сравнивать объекты.
Пожалуйста, не используйте new Object()
- Пожалуйста, используйте {} вместо new Object()
- Пожалуйста, используйте "" вместо new String()
- Пожалуйста, используйте 0 вместо new Number()
- Пожалуйста, используйте false вместо new Boolean()
- Пожалуйста, используйте [] вместо new Array()
- Пожалуйста, используйте /()/ вместо new RegExp()
- Пожалуйста, используйте function (){} вместо new Function()
Пример
var x1 = {}; // новый объект var x2 = ""; // новый примитивный строковый値 var x3 = 0; // новый примитивный числовой値 var x4 = false; // новый примитивный булевый値 var x5 = []; // новый объект массива var x6 = /()/; // новый объект регулярного выражения var x7 = function(){}; // новый объект функции
осознайте автоматическое преобразование типов
Пожалуйста, обратите внимание, что числа могут неожиданно быть преобразованы в строки или NaN
(не число)
JavaScript относится к свободным типам. Переменные могут содержать различные типы данных, и переменные могут изменять свои типы данных:
Пример
var x = "Hello"; // typeof x является строкой x = 5; // изменить typeof x на число
Если выполняется математическое вычисление, JavaScript может преобразовать числовое значение в строку:
Пример
var x = 5 + 7; // x.valueOf() является 12, typeof x является числом var x = 5 + "7"; // x.valueOf() является 57, typeof x является строкой var x = "5" + 7; // x.valueOf() является 57, typeof x является строкой var x = 5 - 7; // x.valueOf() является -2, typeof x является числом var x = 5 - "7"; // x.valueOf() является -2, typeof x является числом var x = "5" - 7; // x.valueOf() является -2, typeof x является числом var x = 5 - "x"; // x.valueOf() является NaN, typeof x является числом
Если вы вычесть строку из строки, это не вызовет ошибку, а вернет NaN
(Не число):
Пример
"Hello" - "Dolly" // возвращает NaN
Использование === для сравнения
==
Сравнительные операторы всегда выполняют преобразование типов перед сравнением (для соответствия типам).
=====
Оператор forzairovoche для сравнения значений и типов:
Пример
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Использование Parameter Defaults
Если при вызове функции отсутствует параметр, то значение отсутствующего параметра будет установлено undefined
。
undefined
Значение может повредить ваш код. Установка defaultValue для параметров - это хорошая привычка.
Пример
function myFunction(x, y) { if (y === undefined) { y = 0; } }
Пожалуйста, читайтеПараметры функцииЭту главу для получения дополнительной информации о параметрах функции.
используйте default для завершения switch
используйте по умолчанию
для завершения вашего switch
Предложение. Даже если вы считаете, что это не необходимо.
Пример
switch (new Date().getDay()) { случай 0: day = "Воскресенье"; прервать; случай 1: day = "Понедельник"; прервать; случай 2: day = "Вторник"; прервать; случай 3: day = "Среда"; прервать; случай 4: day = "Четверг"; прервать; случай 5: day = "Пятница"; прервать; случай 6: day = "Суббота"; прервать; по умолчанию: day = "Неизвестно"; }
Избегайте использования eval()
eval()
Функция используется для того, чтобы текст можно было использовать как код. В большинстве случаев это не необходимо.
Поскольку позволяет запускать любое код, это также означает安全问题.
- Предыдущая страница JS руководство по стилю
- Следующая страница JS ошибки