javascript - 使用 length 而不是 = =""安全吗?

标签 javascript

使用 length 属性代替 =="" 进行空字符串验证是否安全?

它对所有 bool 运算符都有效吗?

这可能是一个非常简单的问题,我很确定答案是肯定的,但我最近经常使用它,我有点担心任何可能的陷阱。

为了完整起见,这是一个简单的示例

var valid = name.length && (foo.length||bar.length);

最佳答案

如果您确定变量中的某些内容可以具有属性(例如字符串),则使用 .length 始终是安全的。

但是,如果变量可能为 undefinednull,则 .length 将无效,并且不会执行您想要的操作name === "" 会更安全。

许多 Javascript 开发人员只是这样做:

if (name) {
    // 
}

这会检查 name 中的任何真值。因此,如果 nameundefinednull 甚至是空字符串 ,则 if 不会得到满足"",并且在某些情况下,可以比您正在做的事情更好地保护您的代码。

<小时/>

或者,在您的示例中,您也许可以这样做:

var valid = name && (foo || bar);

这将要求 namefoobar 为真。这不会防止 namefoobar 成为没有 .length 属性的某种数据类型,例如您的原始代码会,但它可以更好地防止这些变量中的任何一个 undefinednull

请记住,空字符串 "" 是一个错误值,因此您可以在 bool 比较中利用它来发挥优势。

关于javascript - 使用 length 而不是 = =""安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425894/

相关文章:

javascript - 告诉 jQuery 执行 value 属性中设置的 Action

javascript - 将对象转换为数组 (javascript)

javascript - AJAX JQuery 从 html 中删除但不从 mysql 数据库中删除

javascript - 如何使用 javascript 和 CSS 将类似文本的元素插入到文档中?

javascript - 在Vuejs3中如何让sticky header组件在与其他组件相交时改变背景颜色?

javascript - 向 HTML 表格添加过滤

javascript - 多次显示同一组件时共享 session

javascript - 要求 Node 中的类

Javascript 数学显示错误的数字

javascript - 索引返回 -1 jquery