Задача: создать в 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 = [x];
можно ещё проще:
var a = [x];
Comment by Andrew Kulinich — 06.07.2008 @ 17:28
О, точно.
Comment by Val Petruchek — 06.07.2008 @ 18:11
Задача не выполнена.
После выполнения
var a = new Array([x]);
первым элементом массива a будет массив, а вовсе не x
Так что НУЖНО проще, см. первый коммент
Comment by прохожий — 13.02.2009 @ 16:33
проверка:
var x = “hi”;
var a = new Array([x]);
alert(a[0] === x); //false
alert(a[0][0] === x); //true
Comment by прохожий — 13.02.2009 @ 16:36
Прохожий, ваша правда, что-то я тупанул.
Comment by Val Petruchek — 21.02.2009 @ 05:13