这个速记运算符是怎么回事

What is going on in this shorthand operator?

本文关键字:怎么回事 运算符      更新时间:2023-09-26

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

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

是不是,如果 obj 有一个标题,然后将其添加到消息中,否则它是空的?

正如评论中指出的,这是一个三元运算符。这是一个非常奇怪的用法,因为它实际上并没有将运算符的"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