`if-in`如何评价为真? (仅限镀铬)

时间:2013-03-05 07:55:15

标签: javascript google-chrome-devtools

调试其他人的代码,找到了这个,

enter image description here

if-in如何评价为真?但是仅在chrome中发生,IE评估为false

2 个答案:

答案 0 :(得分:5)

它评估true,因为fileInput DOM元素在Chrome上具有files属性。它是File API的一部分。因为they only added the File API to IE in IE10,它在IE上为false。我猜你必须使用IE9或更早版本。

这就是in运算符的作用:检查对象是否具有给定名称的属性,或者是自己的属性,还是从原型对象继承的属性。

这是一个直接的JavaScript示例:

var obj = {foo: 42};
console.log('foo' in obj); // true
console.log('bar' in obj); // false

您会在功能检测中看到这种情况。例如,如果您想知道用户使用的浏览器是否支持使用placeholder元素上的input属性,那么您将查找反射属性:

if ('placeholder' in document.createElement('input')) {
    // It supports the placeholder attribute
}

答案 1 :(得分:1)

in运算符可用于测试对象内是否存在属性:

var obj = {
  foo: 'baz'
};

console.log('foo' in obj); // true

更多信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in