这个 shorthand 运算符是怎么回事?

What is going on in this shorthand operator?

我正在努力提高 shorthand。有人可以帮助澄清以下内容吗?

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

是吗,如果 obj 有标题就将其添加到消息中,否则为空?

正如评论中所指出的,这是一个ternary operator。这是一个非常奇怪的用法,因为它实际上并没有使用运算符的 'else' 部分来做任何有用的事情,并且会更清楚地写成:

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

只要obj.getValue("title")是“truthy”,就会修改message.

如果这是您自己的代码,请借此机会使代码更清晰。

你是对的,如果 obj 有一个标题然后将它添加到消息中,但严格来说你应该知道 obj.getValue("title") 的值不应该是 falsy (0, null, undefined, '', NaN, false)通过条件。

你也可以在这里使用其他选项

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

如果 obj.getValue("title") 具有 truthy 值,则将执行第二个括号中的操作。 您还可以创建对 obj.getValue("title").

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

在这种情况下更好,因为方法 getValue 只执行一次。

Shorthand +=obj.getValue("title") 的值添加到 message.