2012-08-17 49 views
0

我有一个小问题,关于运算符在JavaScript中的IN。我们知道simplifies redundant logical ORs问题与Javascript IN运算符

我有以下声明:

if(value==="abc" || value==="cde" || value==="efg" || ...){ 
... 
} 

我可以用

if(value in { "abc":1, "cde":1, "efg":1, ... }){ 
    ... 
} 

我写了这个作为一个例子,但谷歌Chrome浏览器控制台得到一个错误:

Uncaught SyntaxError: Unexpected token : 

哪里是我的错误?

+0

遗憾的错误 – davids 2012-08-17 09:40:30

+1

这个对我有用。你能提供一个完整的'in'演示,它会引发语法错误吗? – pimvdb 2012-08-17 09:40:38

+1

你在哪个浏览器中使用过?它适用于我.. – 2012-08-17 09:40:49

回答

0

为了避免错误的情况下,地方在你的应用Object.prototype已被修改,您应使用:

if(({ "abc":1, "cde":1, "efg":1, ... }).hasOwnProperty(value)){ 
    ... 
} 
+0

这是一种更安全的方法,但它不能解释为什么问题中的代码无法正常工作。 – Quentin 2012-08-17 09:49:46

-1

只要你可以这样使用。

var foo = "bar"; 

if (foo in { bar:1, foobar:1, foo:1 }) { 
    alert("yes") 
} else { 
    alert("No") 
} 
+0

这与问题中所做的事情有何不同? – Quentin 2012-08-17 09:50:40

+0

其工作正常请检查出来。 – JDev 2012-08-17 09:57:04

+0

问题中的代码工作正常。你提出什么样的改变?为什么? – Quentin 2012-08-17 10:09:03

-1

你的编码应该是...

if(value in { abc:1, cde:1, efg:1}){ 
     //... 
     } 
+0

报价没有任何伤害。 – Quentin 2012-08-17 09:49:04