Советы по оптимизации Javascript
Автор: Николай Петрунин Дата публикации:
Примеры конвертирования переменных
var myVar = "3.14159", str = ""+ myVar,// в стринг (string) int = ~~myVar, // в интеджер (integer) float = 1*myVar, // во флоат (float) bool = !!myVar, // в булен - все непустые строки и числа кроме 0 будут true array = [myVar]; // в массив
Избегайте использования глобальных переменных
Не оптимально:
var i, s = ""; function testfunction() { for( i = 0; i < 20; i++ ) { s += i; } } testfunction();
Оптимально:
function testfunction() { var i, s = ""; for( i = 0; i < 20; i++ ) { s += i; } } testfunction();
Оптимизация создания методов обьекту
Не оптимально:
var Class = function(a0, a1){ this.publicVar = defaultValue; this._fn0 = function(){ this.publicVar = 1; }; };
Оптимально:
var Class = function(a0, a1){ this.publicVar = defaultValue; }; Class.prototype. _fn0 = function(){ this.publicVar = 1; };
Пример оптимизации условия
Не оптимально:
a < sqrt(b);
Оптимально:
var с = a*a; c < b;
Если есть возможность простого вычисления операций из объекта Math то оптимальнее его заменить, и вычисления проводить до условия.
Операторы сравнения "==" vs "==="
Оператор сравнения "=="
Примеры результатов
"" == "0" // false 0 == "" // true 0 == "0" // true false == "false" // false false == "0" // true false == undefined // false false == null // false null == undefined // true "trn" == 0 // true
Оператор сравнения "==="
Примеры результатов
"" === "0" // false 0 === " // false 0 === "0" // false false === "false" // false false === "0" // false false === undefined // false false === null // false null === undefined // false "trn" === 0 // false
Крайне рекомендуется использовать только операторы строгого равенства. В случае, когда намечается преобразование типов, нужно сделать явное приведение и не оставлять их на совести языковых хитростей с преобразованиями.