【发布时间】:2012-08-02 21:39:22
【问题描述】:
我有同样的问题在这里提出:Checking if a key exists in a JavaScript object?。
但是,我正在寻找一种适用于所有主要浏览器(包括 IE 6+)的方法。我看到的我喜欢的方法是使用in 运算符,这是我以前从未见过的。
我在 google chrome 中尝试了一些不同的方法,似乎可以正常工作,但我想知道为什么不使用它而不是 in 运算符。
供参考:
var data = {foo : "bar"};
console.log("foo" in data); // true
console.log("bar" in data); // false
我的建议:
var data = {foo : "bar"};
console.log(!!data.foo); // true
console.log(!!data.bar); // false
我的(第二种)方法有什么缺点吗?
【问题讨论】:
-
很明显,如果键值是假的,那么你会得到一个假阴性
-
试试
var data = {foo: 0};或var data = {foo: false};或var data = {foo: ''};。当然,如果你知道你的对象永远不会包含这样的值,那你很好。但是一般的解决方案应该在没有任何假设的情况下工作。 -
这是不是更适合codereview.stackexchange.com
-
IE6 确实支持
in,见stackoverflow.com/questions/2920765/…
标签: javascript object associative-array