1. Глобальное загрязнение пространства имен
Всегда оберните код в непосредственное выражение функции, чтобы сформировать независимый модуль.
Не рекомендуется
var x = 10, y = 100; console.log (window.x + '' + window.y);
рекомендую
; (function (window) {'strict'; var x = 10, y = 100; console.log (window.x + '' + window.y);} (window));2. Немедленно выполните функцию
В непосредственной функции выполнения, если используются глобальные переменные, орган функции, который выполняет функцию немедленно, может быть вызван в форме локальных переменных при вызове, что в определенной степени улучшает производительность программы.
И вы должны немедленно добавить undefined к формальным параметрам функции в последней позиции, потому что undefined в ES3, можно читать и записан. Если значение undefined изменяется в глобальной позиции, ваш код может не получить просроченных результатов.
Кроме того, рекомендуется немедленно добавлять полуколоны в начале и в конце функции, чтобы не влиять на наш собственный код из -за нерегулярного кода других людей во время слияния.
Не рекомендуется
(function () {'strict'; var x = 10, y = 100, c, elem = $ ('body'); console.log (window.x + '' + window.y); $ (документ) .on ('click', function () {}); if (typeof c === 'undefined') {// your code}} ());рекомендую
; (function ($, window, document, undefined) {'strict'; var x = 10, y = 100, c, elem = $ ('body'); console.log (window.x + '' + window.y); $ (document) .on ('click', function () {}); if (typeof c == 'undefined') { / /your code} (jque);3. Строгой режим
Ecmascript 5 Строгий режим может быть активирован по всему сценарию или в пределах одного метода. Это соответствует различным контекстам JavaScript и будет выполнять более строгие проверки ошибок. Строгий режим также гарантирует, что код JavaScript более надежным и работает быстрее.
Строгий режим предотвращает использование зарезервированных ключевых слов, которые, вероятно, будут введены в будущем.
Вы должны включить строгий режим в своем сценарии, предпочтительно применить его в автономной функции немедленного выполнения. Избегайте использования его в первой строке вашего сценария, который заставляет все ваши сценарии запускаться строгим режимом, что может вызвать проблемы с какой-то сторонней библиотекой.
Не рекомендуется
'Использовать строгое'; (function () {} ());рекомендую
(function () {'используйте strict';} ());IV Переменная объявление
Для всех объявлений переменной мы должны указать var . Если var не указан, в строгом режиме будет сообщена ошибка, а переменные в одной и той же области должны быть объявлены как можно большим количеством var , а множественные переменные должны быть разделены на «».
Не рекомендуется
функция myfun () {x = 5; y = 10;}Не полностью рекомендуется
function myfun () {var x = 5; var y = 10;}рекомендую
функция myfun () {var x = 5, y = 10;}5. Сравнительное суждение с использованием суждения типа
Он использует оператора точного сравнения ===, чтобы избежать проблем, вызванных актером JavaScript во время процесса суждения.
Если вы используете оператор ===, две стороны для сравнения должны быть одинаковыми, чтобы быть действительными.
Не рекомендуется
(function (w) {'strict'; w.console.log ('0' == 0); // true w.console.log ('' == false); // true w.console.log ('1' == true); // true w.console.log (null = undefined); / / var var x = {valuf: rate ') {) {) {) {) {) {) {) {) {) {) {) {) {) {). w.console.log (x == 'x'); // true} (window.console.log));рекомендую
(function (w) {'strict'; w.console.log ('0' === 0); // false w.console.log ('' === false); // false w.console.log ('1' === true); // false w.console.log (null = undefined); / / false var ar var var var var vareof: '); };6. Логические операции при назначении переменных
Логические операторы || и && также может использоваться для возврата логических значений. Если объект операции является не булевым объектом, то каждое выражение будет оцениваться слева направо. Основываясь на этой операции, всегда есть выражение, которое возвращается в конце. Это можно использовать для упрощения вашего кода при назначении переменных.
Не рекомендуется
if (! x) {if (! y) {x = 1; } else {x = y; }}рекомендую
x = x || y || 1;
7. Полуколон
Всегда используйте полуколоны, потому что неявное гнездование кода может вызвать неопределяемые проблемы. Конечно, мы должны принципиально устранить эти проблемы [1].
Следующие примеры показывают вред отсутствию полуколона:
// 1.myclass.prototype.mymethod = function () {return 42;} // Здесь нет полуколона (function () {}) (); //2.var x = {'i': 1, 'J': 2} // Здесь нет полуколона // Я знаю, что вы никогда не напишите такой код, но я приведу пример [ffversion, ieversion] [isie] (); // 3.var things_to_eat = [яблоки, устрицы, Sprayoncheese] // Здесь нет полуколона здесь-1 == resultofoperation () || Die ();Результаты ошибки
1. Ошибка Javascript - функция, которая возвращает 42, сначала называется параметром во второй функции, а затем число 42 также «называется», что приводит к ошибке.
2. Восемьдесят раз вы получите сообщение об ошибке «Нет такого свойства в неопределенном», потому что вызов в реальной среде выглядит следующим образом: xffversion, ieversion ().
3. Диди всегда называется. Поскольку результат минус 1 в массиве - NAN, он ничего не равен (независимо от того, возвращает ли результат NAN или нет). Таким образом, конечным результатом является то, что полученное значение после Die () выполнено, будет назначено TWELS_TO_EAT.
8. Объявления функций в блоках операторов
Никогда не объявляйте функции в блоках операторов, что является незаконным в строгом режиме Ecmascript 5. Объявления функций должны быть на верхнем уровне масштаба. Однако в рамках блока операторов объявление функции может быть преобразовано в выражение функции и назначено переменной.
Не рекомендуется
if (x) {function foo () {}}рекомендую
if (x) {var foo = function () {};}9. Не используйте функцию Eval
eval() не только сбивает с толку контекст, но и опасен. Всегда будет еще одно решение для написания вашего кода, который лучше, яснее и безопаснее, поэтому постарайтесь не использовать функцию eval .
10. Массив и объектные литералы
1. Используйте массив и объектные литералы вместо массива и конструктора объектов. Конструкторы массива могут легко допустить ошибки в своих параметрах.
Не рекомендуется
// Длина массива 3var a1 = новый массив (x1, x2, x3); // Длина массива 2var a2 = новый массив (x1, x2); // Если x1 является естественным числом, его длина будет x1 // Если x1 не является естественным числом, его длина будет 1var a3 = новый массив (x1); var a4 = новое Array ();
Из -за этого, если код проходит от двух до одного, существует высокая вероятность того, что массив будет испытывать неожиданные изменения длины. Чтобы избежать таких странных ситуаций, всегда используйте читаемые массивы литералы.
рекомендую
var a = [x1, x2, x3]; var a2 = [x1, x2]; var a3 = [x1]; var a4 = [];
2. У конструктора объекта не будет похожих проблем, но для читаемости и однородности мы должны использовать объектные литералы.
Не рекомендуется
var O = new Object (); var o2 = new Object (); o2.a = 0; o2.b = 1; o2.c = 2; o2 ['Странный ключ'] = 3;
рекомендую
var O = {}; var o2 = {a: 0, b: 1, c: 2, 'Strange Key': 3};11. Суждение с тройным изменением (быстрый метод для IF)
Используйте тройной оператор для назначения или возврата операторов. Используйте в относительно простых ситуациях и избегайте использования в сложных ситуациях. Никто не хочет использовать 10 линий тройных операторов, чтобы покачивать свои умы.
Не рекомендуется
if (x === 10) {return 'Valid';} else {return 'Invalid';}рекомендую
вернуть x === 10? «Действительно»: «недействительный»;
12. для петли
В процессе использования для цикла длина массива получает переменной, которая способствует повышению эффективности выполнения кода. Вместо этого длина массива должна быть пересчитана каждый раз, когда цикл исчезает.
Не рекомендуется
for (var i = 0; i <arr.length, i ++) {}рекомендую
for (var i = 0, len = arr.length; i <len, i ++) {}13. Повторные операции DOM
Повторные операции DOM необходимо использовать переменную для получения, а не часто эксплуатировать дерево DOM, что оказывает плохое влияние на производительность, аккуратный код и простое обслуживание.
Не рекомендуется
$ ('. MyDiv'). Найти ('. Span1'). Text ('1'); $ ('. MyDiv'). Найти ('. Span2'). Text ('2'); $ ('. MyDiv'). Найти ('.рекомендую
var mydiv = $ ('. mydiv'); mydiv.find ('. span1'). text ('1'); mydiv.find ('. span2'). Text ('2'); mydiv.find ('. Span3'). Text ('3'); mydiv.find ('. span4'). Когда jquery .end() доступен, используйте .end() должен быть предпочтительным.
рекомендую
$ ('. mydiv'). Найти ('. Span1'). Text ('1') .end (). Найти ('. Span2'). Text ('2'); .end (). Найти ('. Span3'). Text ('3'); .end (). Найти ('. Span4'). Text ('4');14. Спецификации комментариев
При описании комментариев рекомендуется форматированный и унифицированный стиль комментариев. Попробуйте описать идеи при написании комментариев, а не то, что делает код.
Не рекомендуется
// Получить функцию порядка getOrderByid (id) {var order; // ... return order;}Метод аннотации должны быть равномерно использовать с аннотациями на уровне блоков
рекомендую
/** * Получить подробные данные заказа на основе идентификатора порядка * @param {[number]} id [order id] * @return {[order]} [ordation] */function getOrderByid (id) {var order; // ... return order;}Суммировать
Резюме общих спецификаций написания кода JavaScript в основном закончено. Эта статья по -прежнему очень полная и имеет определенную справочную ценность для всех, чтобы использовать или изучить какой -то JavaScript. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.