var foo = foo || предупреждение (Foo); - PullRequest
6 голосов
/ 01 декабря 2010

Может кто-нибудь объяснить, что это делает?

var foo = foo || alert(foo);

Ответы [ 3 ]

10 голосов
/ 01 декабря 2010

Если foo уже определен и имеет значение true, он устанавливает foo = foo, то есть он ничего не делает.

Если foo определен, но имеет значение false, он будет всплывать независимо от foois (false, null, undefined, пустая строка, 0, NaN), но поскольку alert ничего не возвращает, foo будет установлено в undefined.

Если foo еще не определено, будет выдано исключение.( Редактировать: В вашем примере foo всегда будет определяться из-за объявления var foo.)

4 голосов
/ 01 декабря 2010

Если foo оценивается как ложное (например, ложь, ноль или ноль), значение после оператора || также оценивается и показывает значение.

Метод alert невернуть значение, поэтому foo станет неопределенным, если оно будет оценено как ложное, в противном случае ему будет присвоено собственное значение.

3 голосов
/ 01 декабря 2010
var foo;

if (foo)
    foo = foo;
else
    foo = alert(foo); // probably undefined
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...