JavaScript ИЛИ (||) объяснение назначения переменной - PullRequest
318 голосов
/ 20 января 2010

Учитывая этот фрагмент JavaScript ...

var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';

var f = a || b || c || d || e;

alert(f); // 4

Может кто-нибудь объяснить мне, как называется эта техника (мое лучшее предположение в названии этого вопроса!)? И как / почему это работает точно?

Насколько я понимаю, переменной f будет присвоено ближайшее значение (слева направо) первой переменной, значение которой не равно ни null, ни undefined, но мне не удалось найти много ссылок материал об этой технике и видел его много.

Кроме того, эта техника специфична для JavaScript? Я знаю, что выполнение чего-то подобного в PHP приведет к тому, что f будет иметь истинное логическое значение, а не само значение d.

Ответы [ 12 ]

0 голосов
/ 21 декабря 2012

Согласно сообщению Билла Хиггинса ; идиома логического ИЛИ присваивания Javascript (февраль 2007 г.), это поведение соответствует версии 1.2 (как минимум)

Он также предлагает другое использование для этого (цитируется): " облегченная нормализация различий между браузерами "

// determine upon which element a Javascript event (e) occurred
var target = /*w3c*/ e.target || /*IE*/ e.srcElement;
0 голосов
/ 22 июня 2010

Он будет оценивать X и, если X не равен NULL, пустой строке или 0 (логическое ложь), то он назначит его z. Если X - ноль, пустая строка или 0 (логическое ложное значение), тогда он назначит y для z.

var x = '';
var y = 'bob';
var z = x || y;
alert(z);

Будет выводить 'bob';

...