Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Array.apply (null, new Array (N))
alert(2 + 2) // 4
2 — Используйте `===` вместо `==` :
5 — Объект через конструктор :
6 — Будьте осторожны, когда используете `typeof, instanceOf, constructor`:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var arr = ["a", "b", "c"]; typeof arr; // return "object" arr instanceof Array // true arr.constructor(); //[]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 — Используйте self-calling функции :
8 — Получение произвольного значения массива :
function contains (array, elem) {
return array.indexOf(elem) >= 0;
}
23 – Используйте `map()`метод, чтобы пройти циклом по массиву :
24 – Округление числа до N чисел после запятой :
31 – Сериализация и десериализация (для JSON) :
28 – Кешируйте переменные, которые необходимы для вычислений или запросов:
На примере jQuery селекторов, мы можем закешировать их результат — DOM элементы.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var navright = document.querySelector('#right'); var navleft = document.querySelector('#left'); var navup = document.querySelector('#up'); var navdown = document.querySelector('#down');
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33 – Избегайте `with` (Хорошая штука):
Использование `with` определяет переменную в глобальное пространство. Если какая-либо переменная будет иметь такое же имя, тогда это создаст определенные проблемы, так как может произойти затирание значения.
35 – Передавайте функции, а не строки для `setTimeout()` и `setInterval()` :
setTimeOut('doSomethingAfterFiveSeconds()', 5000);
37 – Используйте `switch/case` выражение с численными диапазонами :
38 – Создать объект, чей прототип — это задаваемый объект:
Возможно создать функцию, что создает объект, чьим прототипом будет является объект, который передается в аргументе функции…
39 – HTML escaper :
40 – Избегайте использования `try-catch-finally` внутри циклов:
`try-catch-finally` создает новую переменную в текущем пространстве выполнения каждый раз, когда срабатывает исключение и оно связывается с переменной.
43 – Помните, что примитивы работают быстрее, чем вызовы функций.
array.push(foo) работает быстрее array[array.length] = foo, так что совет не в тему. И от того, что примитивы работают быстрее функций не значит, что все функции надо вручную разворачивать и писать каждый раз заново.var d = document.createElement("div");
d.appendChild(document.createTextNode("this <b>is</b> html"));
return d.innerHTML;
var esc = {
'reg': function (text) {
var replacements= {"<": "<", ">": ">","&": "&", '"': """};
return text.replace(/[<>&"]/g, function(character) {
return replacements[character];
});
},
'dom': function (text) {
var s = document.createElement("span"),
t = document.createTextNode("");
s.appendChild(t);
function f(text) {
t.nodeValue = text;
return s.innerHTML;
}
esc.dom = f;
return f(text);
}
};
var a = [1,2,3,4,5];
delete a[2];
for( var i in a )
console.log(i);
// 0,1,3,4
for(var i = 0; i < arrayNumbers.length; i++) {
sum += arrayNumbers[i];
}
Number.toFixed возарвщает String, так что если вы хотите округлить, а не отформатировать, то правильнее пользоваться +num.toFixed(4)numbers.sort(function(){ return Math.random() - 0.5});. Если он относительно большой то перемешан он будет более чем неравномерно. Примитивная мешалка массива из 10 элементов — идеально :)
45 Типсов-Триксов и Практик JavaScript