这怎么了

var colours = ['red','green', 'blue']
console.log('blue' in colours);  // outputs false


输出错误,我以为应该是trye。

谢谢

最佳答案

由于您正在处理Array,因此无法以这种方式进行检查。 Arrays为您提供Array.prototype.indexOf方法以确定其中是否存在某些东西:

console.log( colours.indexOf( 'blue' ) > -1 );


说明:

ECMAscript中的数组只是专门的Objects。这意味着您的Array确实看起来像

colours = {
    0: 'red',
    1: 'green',
    2: 'blue'
};


由于in运算符仅检查对象keys,因此无法使用它检查值。您确实可以检查例如if('1' in colours)(将返回true),但这没有多大意义。同样,对数组使用.indexOf()

旁注:ECMAscript Harmony(ES.Next或ES6)将给出for of循环,该循环代替键枚举对象值。我不确定是否可以与of一样使用in运算符,但这将非常有用。

09-30 00:19