2016-10-24 3 views
-3

У меня есть такой код:массив и глобальный объект

var ui = ["one","two","three"]; 
ui.forEach(function(id) 
{ 
    ui[id] = "msg_all " + id 
}); 
console.dir(ui); 

Почему Ui [0] == "один", когда window.one == "msg_all один"

+0

окна @gra является основой объемом всех яваскрипта объектов, и это автоматически «привязывается» к каждому переменным вы определяете, если вы не используете «вар» до объявления, в этом случае объем переменного это локальное (это означает, что он содержится внутри родительской функции или в противном случае является глобальным, если вы объявляете свою переменную вне функционального блока). Кроме того, окно определяется как константа, то есть вы не можете переопределить объект окна (вы получите сообщение об ошибке «type error: redeclaration of const window»). – Elangovan

+0

, потому что ui [id] равен примеру ui ["one"], поэтому window.one равно этому сообщению – Araz

+0

, а ui - массив с inde 0 1 2 – Araz

ответ

1

Вы неправильно использовать Foreach функция, первым аргументом для этой функции является элемент для каждой итерации, а второй аргумент - индекс.

var ui = ["one","two","three"]; 
ui.forEach(function(item, index) 
{ 
    ui[index] = "msg_all " + item 
}); 
console.dir(ui); 
+0

нет, это хороший пример. Я знаю, что вторым аргументом является индекс, когда является первым аргументом. Но почему, когда я запускаю консоль.dir i gest thos msg: [«один», «два», «три»] –

+0

[«один», «два», «три»] 0: «один» 1: "два" 2: "три" один: "msg_all один" два: "msg_all два" три: "msg_all три" длины: 3 __proto __: Array [0] Почему? –

+0

'id' не является целым числом, почему вы используете его непосредственно как индекс в массиве' ui'? – Enix

Смежные вопросы