调试别人的代码,发现了这个,
如何if-in
评估为真?仅在 chrome 中发生,IE 评估为 false
之所以进行评估true
,是因为fileInput
DOM 元素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