调试别人的代码,发现了这个,

如何if-in评估为真?仅在 chrome 中发生,IE 评估为 false
之所以进行评估true,是因为fileInputDOM 元素files在 Chrome 上有一个属性。它是File API的一部分。它false在 IE 上,因为他们只在 IE10 中将 File API 添加到 IE 中。我猜你必须使用 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
}
该in运算符可用于测试对象内部是否存在属性:
var obj = {
foo: 'baz'
};
console.log('foo' in obj); // true
更多信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in