我想在速记方面做得更好。有人可以帮助澄清下面的内容吗?
(obj.getValue("title")) ? message += "\ntitle: " + obj.getValue("title") : null;
是否,如果obj有标题然后将其添加到消息中,否则它为空?
答案 0 :(得分:2)
正如评论中所指出的,这是一个ternary operator。这是一个非常奇怪的使用,因为它实际上没有使用'其他'操作员的一部分用于任何有用的东西,并且更清楚地写成:
if (obj.getValue("title")) {
message += "\ntitle: " + obj.getValue("title");
}
只要obj.getValue("title")
为" truthy",就会修改message
。
如果这是您拥有的代码,请抓住机会使代码更清晰。
答案 1 :(得分:0)
如果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
只执行一次。
速记+=
会将obj.getValue("title")
的值添加到message
。