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没有。