пятница, 21 июня 2013 г.

Лучше проверять не переданные аргументы в функцию, путем сравнения их с undefined.

Лучше проверять не переданные аргументы в функцию, путем сравнения их с undefined.

function Server(port, hostname) {
    if (hostname === undefined) {
        hostname = "localhost";
    }
    hostname = String(hostname);
    // ...
}

Проверку можно делать и так

function Server(port, hostname) {
    hostname = String(hostname || "localhost");
    // ...
}

но надо быть осторожным, так как значение 0 или пустая строка "" при сравнении преобразуются в false!!!

function Element(width, height) {
    this.width = width || 320;   // wrong test
    this.height = height || 240; // wrong test
    // ...
}

var c1 = new Element(0, 0);

c1.width;  // 320
c1.height; // 240

Поэтому надежнее всего писать так

function Element(width, height) {
    this.width = width === undefined ? 320 : width;
    this.height = height === undefined ? 240 : height;
    // ...
}

var c1 = new Element(0, 0);

c1.width;  // 0
c1.height; // 0

var c2 = new Element();

c2.width;  // 320
c2.height; // 240

Комментариев нет:

Отправить комментарий