3

他の人のコードをデバッグすると、これが見つかりました。

ここに画像の説明を入力

はどのようif-inに true と評価されますか? ただし、クロムでのみ発生し、IEはfalseと評価されます

4

2 に答える 2

5

DOM要素がChrome上でプロパティを持っているtrueため評価します。これはFile APIの一部です。IE10でFile API を IE に追加しただけなので、IE 上にあります。IE9以前を使用しているに違いないと思います。fileInputfilesfalse

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
}
于 2013-03-05T07:57:05.190 に答える
1

in演算子は、オブジェクト内のプロパティの存在をテストするために使用できます。

var obj = {
  foo: 'baz'
};

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

詳細: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in

于 2013-03-05T07:57:18.873 に答える