使用长度而不是==“是安全的吗&”;
Is it safe to use length instead of ==""?
使用length
属性而不是==""
进行空字符串验证是否安全?
它对所有布尔运算符都有效吗?
这可能是一个非常简单的问题,我很确定答案是肯定的,但我最近经常使用它,我有点担心任何可能的陷阱。
为了完整起见,这里有一个简单的示例
var valid = name.length && (foo.length||bar.length);
如果您确信变量中有可以具有属性(如字符串)的内容,那么使用.length
总是安全的。
但是,如果变量可能是undefined
或null
,那么.length
将无效,并且不会执行您想要的操作,name === ""
将更安全。
许多Javascript开发人员只需执行以下操作:
if (name) {
//
}
这将检查name
中的任何真实值。因此,如果name
是undefined
、null
,甚至是空字符串""
,并且在某些情况下,对代码的保护比您所做的要多一点,那么if
将不会得到满足。
或者,在你的例子中,你也许可以这样做:
var valid = name && (foo || bar);
这将要求name
和foo
或bar
是真实的。这不会像原始代码那样防止name
、foo
或bar
成为没有.length
属性的某种类型的数据,但它可以更好地防止这些变量中的任何一个成为undefined
或null
。
请记住,空字符串""
是一个伪值,因此您可以在布尔比较中使用它。
相关文章:
- Meteor出版物'是这样的吗;t触发器
- 如何在yii中在同一行中给出onblur和onkeypress,这是可能的吗
- 我用诺言是对的吗
- 正则表达式对我想要做的事情是正确的吗?
- eval() 在解析 json 对象时不是强制性的吗?
- 使用长度而不是==“是安全的吗&”;
- 将数组传递给Javascript Date构造函数,是标准的吗?
- jQuery创建的节点是假的吗?
- 道格拉斯·克罗克福德在严格模式示例中是错误的吗?
- 文档打开和文档关闭是必要的吗?
- 将迭代和逻辑放在测试中是错误的吗?
- 在客户端JavaScript中存储Web应用程序的用户密码 - 这是安全的吗?
- 重新定义一个RequireJS模块 - 这是可能的吗
- javascript函数从编写的脚本外部调用是安全的吗?
- JScrambler服务对于保护javascript是安全的吗?
- 删除javascript源代码是安全的吗?
- 我的方法对xss是完全安全的吗?
- 这个技巧在所有浏览器中都是安全的吗?
- 这些javascript方法可以被认为是XSS安全的吗?
- 使用javascript eval()在输入中进行简单计算是安全的吗?