Подтвердить что ты не робот

Сокращенное выражение if/else Javascript

Мне интересно, есть ли более короткий способ написать это:

var x = 1;
if(y != undefined) x = y;

Сначала я попробовал x = y || 1, но это не сработало. Каков правильный способ сделать это?

4b9b3361

Ответ 1

var x = y !== undefined ? y : 1;

Обратите внимание, что var x = y || 1; присваивает 1 для любого случая, когда y является ложным (например, false, 0, ""), что может быть, поэтому оно "не работает" для вас, Кроме того, если y является глобальной переменной, если она действительно не определена, вы можете столкнуться с ошибкой, если только вы не получите ее как window.y.


Как предлагает vol7ron в комментариях, вы также можете использовать typeof, чтобы избежать необходимости ссылаться на глобальные vars как window.<name>:

var x = typeof y != "undefined" ? y : 1;

Ответ 2

Еще один способ быстро записать его

bePlanVar = !!((bePlanVar == false));

// is equivalent to

bePlanVar = (bePlanVar == false) ? true : false;

// and 

if (bePlanVar == false) {
    bePlanVar = true;
} else {
    bePlanVar = false;
}

Ответ 3

y = (y != undefined) ? y : x;

Скобки не нужны, я просто добавляю их, потому что мне легче читать этот путь.

Ответ 4

Другой путь, чем тройной, с использованием короткого замыкания:

typeof y !== 'undefined' && y || 1

Хотя я все еще думаю, что троянец более читабельен...

Ответ 5

Вот способ сделать это, который работает, но не может быть лучшей практикой для любого языка:

var x,y;
x='something';
y=1;
undefined === y || (x = y);

в качестве альтернативы

undefined !== y && (x = y);