Избегайте глобальных переменных, во избежание new , избегать == , во избежание eval()
Избегайте глобальных переменных
Сведите к минимуму использование глобальных переменных.
Это включает в себя все типы данных, объекты и функции.
Глобальные переменные и функции могут быть перезаписаны другими сценариями.
Используйте локальные переменные вместо этого, и узнать , как использовать замыкания .
Всегда объявлять локальные переменные
Все переменные , используемые в функции должны быть объявлены как локальные переменные.
Локальные переменные должны быть объявлены с var ключевого слова, иначе они станут глобальными переменными.
Строгий режим не позволяет необъявленных переменных.
Объявления по началу
Это хорошая практика кодирования, чтобы поместить все объявления в верхней части каждого скрипта или функции.
Это будет:
- Дайте чистый код
- Обеспечить единое место для поиска локальных переменных
- Сделать это проще, чтобы избежать нежелательных (подразумеваемые) глобальные переменные
- Уменьшить вероятность нежелательных повторных заявлений
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;
Это касается также переменных цикла:
// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++)
{
По умолчанию, JavaScript перемещает все объявления к началу страницы (JavaScript грузоподъемных).
инициализировать переменные
Это хорошая практика кодирования для инициализации переменных при объявлении их.
Это будет:
- Дайте чистый код
- Обеспечить единое место для инициализации переменных
- Избегайте неопределенные значения
// Declare and initiate at the beginning
var firstName = "",
lastName
= "",
price = 0,
discount = 0,
fullPrice
= 0,
myArray = [],
myObject = {};
Инициализация переменных дает представление предполагаемого использования (и предназначенный тип данных).
Никогда не Объявите число, строка или логические объекты
Всегда рассматривайте числа, строки или Булев как примитивные значения. Не в качестве объектов.
Объявив эти типы в качестве объектов, замедляет скорость выполнения, и производит неприятные побочные эффекты:
пример
var x = "John";
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Попробуй сам " Или еще хуже:
пример
var x = new String("John");
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Попробуй сам " Не используйте new Object()
- Используйте {} вместо new Object()
- Используйте "" вместо new String()
- Используйте 0 вместо new Number()
- Используйте false вместо new Boolean()
- Используйте [] вместо new Array()
- Используйте /()/ вместо new RegExp()
- Используйте function (){} вместо new Function()
пример
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/; // new regexp object
var x7 = function(){}; // new function object
Попробуй сам " Остерегайтесь автоматического преобразования типов
Имейте ввиду , что цифры случайно могут быть преобразованы в строки или NaN (не число).
JavaScript является слабо типизированным. Переменная может содержать различные типы данных, а переменная может изменить его тип данных:
пример
var x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
Попробуй сам " При выполнении математических операций, JavaScript может преобразовывать числа в строки:
пример
var x = 5 + 7; // x.valueOf() is 12, typeof x is a number
var x = 5 + "7"; // x.valueOf() is 57, typeof x is a string
var x = "5" + 7; // x.valueOf() is 57, typeof x is a string
var x = 5 - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "7"; // x.valueOf() is -2, typeof x is a number
var x = "5" - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
Попробуй сам " Вычитая строку из строки, не генерирует сообщение об ошибке , но возвращает NaN (не число):
Использование === Сравнение
== Оператор сравнения всегда преобразует (к соответствию типов) перед сравнением.
=== Оператор силы Сравнение значений и типа:
пример
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
Попробуй сам " Использование параметров настройки по умолчанию
Если функция вызывается с недостающим аргументом, значение недостающего аргумента установлено значение undefined .
Неопределенные значения может привести к поломке вашего кода. Это хорошая привычка присваивать значения по умолчанию для аргументов.
Подробнее о параметрах функции и аргументы в функциональных параметрах
End коммутаторах со значениями по умолчанию
Всегда заканчивайте ваши заявления переключатель с по умолчанию. Даже если вы думаете, что нет необходимости в этом.
пример
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;
default:
day =
"Unknown";
}
Попробуй сам " Избегайте использования eval()
eval() функция используется для запуска текст в качестве кода. Почти во всех случаях, это не должно быть необходимо использовать его.
Потому что это позволяет произвольный код запуска, он также представляет собой проблему безопасности.