欠落しているコードがあるようです。
var M = [];
グローバル変数のように見える変数に新しい配列を割り当てM
ます(ただし、そうではない可能性があります。コンテキストを適切に判別するための十分なコードが表示されていないだけです)。
haveComponents: function () {
これは、。というプロパティに関数を割り当てるオブジェクトリテラルの一部のようhaveComponents
です。
var a = 0;
ローカル変数a
を作成し、コードの実行時に値を割り当てます0
。
for (var n in this.M) a++;
ローカル変数n
を作成し、参照するものの列挙可能なプロパティの名前を順番に割り当てthis.M
ます。this
がグローバルオブジェクトの場合、上記M
で初期化された配列になります。そうでない場合、それは何か他のものであるかもしれないし、そうでないかもしれません。他の割り当て、または設定されているものは表示されていませんthis
。
の列挙可能なプロパティM
(継承されたプロパティを含む)ごとa
に、1ずつインクリメントされます。
return a > 0;
}
がゼロより大きいtrue
場合に戻ります。a
同等の関数は次のとおりです。
haveComponents: function () {
for (var n in this.M) {
// this.M has at least one enumerable property
return true;
}
// this.M has no enumerable properties
return false;
}
または純粋主義者のために:
haveComponents: function () {
var hasEnumerable = false;
for (var n in this.M) {
hasEnumerable = true;
break;
}
return hasEnumerable;
}