#javascript #arrays #frontend
#javascript #массивы #интерфейс
Вопрос:
У меня есть такой код, как этот:
var ui = ["one","two","three"];
ui.forEach(function(id)
{
ui[id] = "msg_all " id
});
console.dir(ui);
Почему ui [0] == «один», когда window.one == «msg_all один»
Комментарии:
1. окно @gra — это базовая область видимости всех объектов javascript, и оно автоматически «привязывается» к каждой определяемой вами переменной, если только вы не используете «var» перед объявлением, в этом случае область видимости переменной является локальной (это означает, что она содержится внутри родительской функции или иным образом тоже является глобальной, если вы объявляете свою переменную вне функционального блока). Более того, window определено как константа, то есть вы не можете переопределить объект window (вы получите сообщение об ошибке «ошибка типа: повторное объявление const window»).
2. поскольку ui[id] равен примеру ui [«one»], то window.one равен этому сообщению
3. в то время как пользовательский интерфейс представляет собой массив с индексом 0 1 2
4. Знаете ли вы, что индексация массива начинается с нуля?
5. чего вы хотели бы достичь?
Ответ №1:
Вы неправильно использовали функцию forEach, первым аргументом для этой функции является элемент для каждой итерации, а вторым аргументом является индекс.
var ui = ["one","two","three"];
ui.forEach(function(item, index)
{
ui[index] = "msg_all " item
});
console.dir(ui);
Комментарии:
1. нет, это хороший пример. Я знаю, что вторым аргументом является index, когда первым аргументом является item. Но почему, когда я запускаю console.dir, я показываю эти сообщения: [«один», «два», «три»]
2. [«один», «два», «три»] 0: «один» 1: «два» 2: «три» один: «msg_all один» два: «msg_all два» три: «msg_all три» длина: 3 прото : Массив[0] Почему?
3.
id
не является целым числом, почему вы используете его непосредственно как индекс вui
массиве?4. итак, почему ui[«one»] == «msg_all one»?
5. var arr = []; arr[«x»] = «y»; console.log(обр.длина)// 0 🙁 но: console.log(обр.[«x»])// «y» Почему длина равна 0?