调试其他人的代码,找到了这个,
if-in
如何评价为真?但是仅在chrome中发生,IE评估为false
答案 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