Дан такой код:

Код AS3:
const M_HEIGHT = 15; // Строка
const M_WIDTH = 20; // Столбец
function ABC():void
{
massiv:Array = [];
massiv.length = M_HEIGHT;
for (var ay:int = 0; ay < M_HEIGHT, ay++)
{
massiv = [];
massiv[ay].length = M_WIDTH;
for (var ax:int = 0; ax < M_WIDTH, ax++)
{
massiv[ay][ax] = CELL_FREE // Какое-нибудь значение
}
}
}
Теперь вопросы:
1. Почему при инициализации нужно присвоить хотя бы какое-то значение ? В данном примере
massiv:Array = []; Нельзя ли написать просто massiv:Array. Ведь в данном коде далее идет присвоение массиву значения
massiv[ay][ax] = CELL_FREE.
2. Почему при задании длины массиву обращаться приходиться так
massiv.length = M_HEIGHT;, а не так
massiv[ay].length = M_HEIGHT;,
а вместо
massiv[ay].length = M_WIDTH; вот так
massiv[ax].length = M_WIDTH;