这个 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
.
我正在努力提高 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
.