这似乎是一种从数据属性读取值或使用默认值(如果不存在)的巧妙方法:
var confirmMessage = resourceDiv.attr("data-confirm-delete-text") || "Delete this resource?";
它依赖于未定义
(如果属性不存在则返回)为假。这是浏览器安全的解决方案吗?如果没有,什么是更好的方法?
最佳答案
是的,浏览器是安全的。只是要小心,不要在有效时为假的值上使用它,例如 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?';
正如您所看到的,它们更加冗长,并且在三元的情况下,可能包含一些冗余。
关于javascript - 这个 jQuery 模式浏览器安全吗 : "attr(' foo') || 'default' "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487498/