'onhashchange'in(window)
この構成の他の例のように、仕事があることは驚くことではありませんが、文字列を分離する必要はありin()
ません。new(XMLHTTPRequest)
typeof(x)
in
これはECMAScriptの仕様に準拠していますか?ChromeとFFで動作し、IEはテストされていません。
'onhashchange'in(window)
この構成の他の例のように、仕事があることは驚くことではありませんが、文字列を分離する必要はありin()
ません。new(XMLHTTPRequest)
typeof(x)
in
これはECMAScriptの仕様に準拠していますか?ChromeとFFで動作し、IEはテストされていません。
window
私の知る限り、この特定のインスタンスで括弧で囲むかどうかに違いはありません。いずれにせよ、window
オブジェクトのこのメンバーをチェックします。
スペースを使用すると、混乱が少なくなる可能性があります。
'onhashchange' in (window)
と同じ
'onhashchange' in window
in
は関数ではありませんが、スペースを削除すると、そのように読み取る方法がわかります。括弧で囲むことの利点の1つwindow
は、コードを縮小できることです。
'onhashchange'in(window)
かっこなしではできないこと。
'
は文字列を終了するトークンであるため、ペア''
は意味的に明確です。文字列の終わりに到達したことをレクサーが認識するために、文字列の終わりの後に空白は必要ありません。
別の言い方をすれば、これは同じ理由で'Hello '+'world'
機能するということです。
さらに、in
はキーワードであり、関数ではありません。あなたは「関数呼び出し演算子」として考えているように見えます()
が、この場合、それは曖昧さを解消する括弧にすぎません。
「なぜうまくいくの1 +(2)
か」と尋ねるようなものです。+
は、パレンでフォローしているからといって関数にはなりません。同様に、次のように機能します。
function foo(){}
foo
();
Javascriptは、空白の規則が脆弱です。
この表記法があなたを混乱させているかどうかはわかりませんが (それはおそらくin()
メソッドですか?)、in
ほとんどの人が正しく理解していない JS の要素の 1 つです (私はごく最近までそれを本当に理解していませんでした)。これは、次のことを示す単純化されたバージョンin
です。
var foo = {
'bar':1,
'barbar':2
}
console.log('bar' in foo); //true
console.log('baz' in foo); //false
これをさらにややこしくしているのは、あたかも ( ) がイテレータであるかのようin
に、ループ内で使用できることです。私がループについて考える傾向がある方法は次のとおりです。for()
in
for
for (exp1; condition; exp2) {
/* statements */
}
for (condition) {
/* statements */
}
つまり、ループはin
条件が失敗するまで続きます。これは、メンバーが不足したときに発生します。