Javacript использует оценку короткого замыкания для логических операторов ||
и &&
. Однако он отличается от других языков тем, что возвращает результат последнего значения, которое остановило выполнение, вместо значения true
или false
.
Следующие значения считаются ложными в JavaScript .
""
(пустая строка) Игнорируя правила приоритета оператора и сохраняя простые вещи, следующие примеры показывают, какое значение остановило оценку и возвращается в результате.
false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"
Первые 5 значений до NaN
являются ложными, поэтому все они оцениваются слева направо, пока не встретит первое правное значение - "Hello"
, которое делает все выражение true, поэтому ничего дальше не будет оцениваться, а "Hello"
возвращается в результате выражения. Аналогично, в этом случае:
1 && [] && {} && true && "World" && null && 2010 // null
Первые 5 значений являются правдивыми и оцениваются до тех пор, пока они не удовлетворяют первому значению фальши (null
), которое делает выражение ложным, поэтому 2010
isn ' t больше, и null
возвращается в результате выражения.
Приведенный вами пример использует это свойство JavaScript для выполнения задания. Его можно использовать везде, где вам нужно получить первое значение правды или ложности среди набора значений. Этот код ниже присваивает значение "Hello"
b
, поскольку он упрощает назначение значения по умолчанию вместо выполнения проверок if-else.
var a = false;
var b = a || "Hello";
Вы можете вызвать приведенный ниже пример использование этой функции, и я считаю, что это делает код более трудным для чтения.
var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);
Внутри предупреждения мы проверяем, является ли messages
ложным, и если да, то оцените и верните noNewMessagesText
, иначе оцените и верните newMessagesText
. Поскольку в этом примере это ложь, мы останавливаемся на noNewMessagesText и предупреждаем "Sorry, you have no new messages."
.
загрузить аддон AnyEdit:
, а затем выполните следующие действия:
Вы можете попробовать и экспортировать (например, «скопировать в каталог метаданных рабочего пространства другого человека»):
</path/to/.metadata>\.plugins\org.eclipse.ui.workbench\workingsets.xml
Это файл, ссылающийся на ваши рабочие наборы.
z0r добавляет в комментарии :
мой товарищ по команде заменил свой
workingsets.xml
моей версией файла, и это сработало.
Однако вы должны выйти из Eclipse перед заменой файла, потому что Eclipse перезапишет его старой версией при выходе.
Думаю, вам нужно сделать это только один раз.