Что происходит в этом сокращенном операторе?

Я пытаюсь поправиться в стенографии. Может кто-нибудь помочь прояснить ниже?

(obj.getValue("title")) ? message += "\ntitle: " + obj.getValue("title") : null;

Если у obj есть заголовок, добавьте его в сообщение, иначе он будет нулевым?

2 ответа

Решение

Как указано в комментариях, это троичный оператор. Это очень странное использование одного, так как на самом деле он не использует часть оператора else для чего-то полезного, и было бы более четко написано как:

if (obj.getValue("title")) {
    message += "\ntitle: " + obj.getValue("title");
}

Пока obj.getValue("title") " правда", это будет изменить message,

Если это в вашем коде, воспользуйтесь возможностью, чтобы сделать код более понятным.

Вы правы, если у obj есть заголовок, затем добавьте его в сообщение, но чтобы быть строгим, вы должны знать это значение obj.getValue("title") не должно быть ложным (0, null, undefined, '', NaN, false) пройти условие.

Также вы можете использовать здесь другой вариант

obj.getValue("title") && (message += "\ntitle: " + obj.getValue("title"));

Если obj.getValue("title") имеет истинное значение, чем будет выполняться операция во вторых скобках. Также вы можете создать ссылку на obj.getValue("title"),

var title = obj.getValue("title");
title && (message += "\ntitle: " + title);

Лучше в этом случае вызывать метод getValue выполняется только один раз.

стенография += предвосхищает значение obj.getValue("title") в message,

Другие вопросы по тегам