Я получаю неожиданный вывод консоли после назначения массива в браузерах webkit (Chrome 16.0.912.77 и Safari 5.1.2 - 7534.52.7).
Вот моя функция, которая демонстрирует ошибку:
function test() {
var myArray = [];
console.log(myArray); // Should be [], but is [0]
myArray.push(0);
}
Я получаю ожидаемый вывод [] в Firefox 7.0.1.
[EDIT]
Когда я вставляю длинный синхронный сон, проблема не исчезает.Это заставляет меня думать, что (1) несмотря на то, что оператор console.log является асинхронным, он выполняется в том же потоке и (2) ожидает, пока очередь событий не опустеет, прежде чем он запустится, и (3) ссылка будет передана на консоль.log превращается в строку при окончательном запуске console.log, а не при его вызове.
function sleep(millis){
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
function test() {
var myArray = [];
console.log(myArray); // Should be [], but is [0]
sleep(2000);
myArray.push(0);
}
Это не похоже на желаемое поведение.