Задача: создать в JavaScript массив из одного элемента, равного значению переменной x.
Очевидное решение var a = new Array(x); — неправильно.
Если переменная x имеет тип number и является целым числом (например, x=5), то вместо массива с одним элементом, равным 5, мы получим пустой массив из пяти элементов. А если x является дробным числом (например, x = 5.2), то мы вообще получим ошибку invalid array length. Если x — строка, то решение сработает.
Причина такого поведения браузеров в том, что при создании массива через Array(x) интерпретатор ведёт себя по-разному в зависимости от типа переменной x. Если он получает тип number, то он трактует этот параметр как длину создаваемого массива, а не как значение нулевого элемента.
Правильный ответ: var a = new Array([x]);

можно ещё проще:
var a = [x];
Comment by Andrew Kulinich — 06.07.2008 @ 17:28
О, точно.
Comment by Val Petruchek — 06.07.2008 @ 18:11