Javascript オブジェクト リテラル表記法とプロトタイプを使用した関数の使用を実験してきましたが、理解できないバグに遭遇しました。
関連するコードは次のとおりです。
var MyTestObj = {
myTestFunction: function() {
var myArray = []
console.log('Before:');
console.log(myArray);
console.log(myArray.length);
console.log('---');
for (var mi = 0; mi < 5; mi++) {
myArray.push(1);
}
return myArray;
}
}
console.log(myArray) を呼び出すと、[] が出力されると思っていましたが、代わりに次のようになりました。
> MyTestObj.myTestFunction()
Before:
[1, 1, 1, 1, 1]
0
---
[1, 1, 1, 1, 1]
ループの前に myArray を出力したときに、 myArray に既に値がある理由を誰かが説明できますか? そして、直後に正しい長さ (0) を出力するのはなぜですか?
助けに感謝します。