javascript - 这个 jQuery 模式浏览​​器安全吗 : "attr(' foo') || 'default' "?

标签 javascript jquery cross-browser

这似乎是一种从数据属性读取值或使用默认值(如果不存在)的巧妙方法:

var confirmMessage = resourceDiv.attr("data-confirm-delete-text") || "Delete this resource?";

它依赖于未定义(如果属性不存在则返回)为假。这是浏览器安全的解决方案吗?如果没有,什么是更好的方法?

最佳答案

是的,浏览器是安全的。只是要小心,不要在有效时为假的值上使用它,例如 0false。另请注意,您会发现有些人不喜欢使用该构造,但这主要是为了代码可读性问题,而不是浏览器支持。

替代方案是 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/

相关文章:

javascript - 将跨度添加到字符串(HTML 元素中)中的字符

javascript - jquery 检查复选框是否被选中

javascript - 如何在 javascript 中几秒钟后向用户显示错误消息后隐藏/删除错误消息

html - 仅当元素包含剪辑文本时才设置样式

javascript - ReactJs 试图创建一个过滤器列表

javascript - Three.js,appendChild 和返回

javascript - 使用 jquery 进行循环

javascript - 从 Ajax 响应提交表单

cross-browser - IE8背景截断

javascript - 通过 JavaScript 重新加载页面并重新发送表单信息