Javascript “if in”如何计算为true?(仅镀铬)

Javascript “if in”如何计算为true?(仅镀铬),javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,调试其他人的代码,发现了这个 if in如何计算为true?但只在chrome中发生,IE的计算结果为false它的计算结果为true,因为fileInputDOM元素在chrome上有一个files属性。这是我们的一部分。IE上的false,因为。我猜你一定在使用IE9或更早版本 这就是操作符中的所做的:检查对象是否有具有给定名称的属性,或者是它自己的属性,或者是它从原型对象继承的属性 下面是一个简单的JavaScript示例: var obj = {foo: 42}; console.lo

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


if in
如何计算为true?但只在chrome中发生,IE的计算结果为false

它的计算结果为
true
,因为
fileInput
DOM元素在chrome上有一个
files
属性。这是我们的一部分。IE上的
false
,因为。我猜你一定在使用IE9或更早版本

这就是操作符中的
所做的:检查对象是否有具有给定名称的属性,或者是它自己的属性,或者是它从原型对象继承的属性

下面是一个简单的JavaScript示例:

var obj = {foo: 42};
console.log('foo' in obj); // true
console.log('bar' in obj); // false
你可以看到这在特征检测中使用了很多。例如,如果您想知道用户正在使用的浏览器是否支持在
input
元素上使用
placeholder
属性,请查找反射属性:

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

中的
操作符可用于测试对象中是否存在属性:

var obj = {
  foo: 'baz'
};

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

更多信息:

这是检查fileInput中是否存在文件。像
if(exists(fileInput.files))
这在IE中不可用,因为自IE10Ok以来就包含了fileInput,所以我如何在IE上检查此
文件
属性?
中的
显然不起作用。旧IE不支持文件API这就是为什么会有这样的测试,来检查不支持它的浏览器。@badZoke:
中的
在IE中运行良好。您使用的IE版本显然没有
文件
属性。(他们只是在IE10中将文件API添加到IE中,)好的,所以我在IE9上测试,
监视表达式中的元素没有
文件
属性
@badZoke:对。IE9没有。