这似乎是一种从数据属性中读取值的简洁方法,或者如果它不存在则使用默认值:
var confirmMessage = resourceDiv.attr("data-confirm-delete-text") || "Delete this resource?";
它依赖于undefined
(如果该属性不存在则返回)是假的。这是一个浏览器安全的解决方案吗?如果没有,有什么更好的方式?
答案 0 :(得分:2)
是的,浏览器安全。只要警惕在有效的值上使用它,例如0
或false
。另请注意,您会发现一些不喜欢使用该结构的人,但主要是因为代码可读性问题,而不是浏览器支持。
备选方案是if
声明:
var confirmMessage = resourceDiv.attr("data-confirm-delete-text");
if (!confirmMessage)
confirmMessage = "Delete this resource?";
或三元:
var confirmMessage = resourceDiv.attr("data-confirm-delete-text") ? resourceDiv.attr("data-confirm-delete-text") : 'Delete this resource?';
正如您所看到的,它们更加冗长,就三元而言,可能包含一些冗余。