Помогите разобраться в выводе

123
27 марта 2021, 09:30

Дорогие программисты,есть маленький кусок кода,который я,к сожалению,не понял,а именно : почему на выходе получается function, в коде нет метода 2,почему работает?

var arr = ["a", "b"];
arr.push(function() {
  alert( this );
})
arr[2](); // "a","b",function
Answer 1

Нумерация в массиве начинается с нуля, а квадратные скобки говорят о том, что мы обращаемся к элементу массива

const a = [1, "2", function foo() {}, {}];
a[0]; // number
a[1]; // string
a[2]; // function
a[3]; // object

В вашем случае элемент ( функция ) еще и сразу же вызывается

Answer 2

this внутри function - это ссылка на сам массив. В момент, когда ты вызываешь arr2 ты вызываешь функцию, помещенную внутрь массива на позицию с индексом 2. Она в свою очередь показывает тебе содержимое массива, буквы a,b и функцию на 3 позиции. Ты можешь поиграться с этим, поместив, например, внутри функции this в глобальную переменную. Например так

var a = 123
var arr = ["a", "b"];
arr.push(function() {
a = this;
alert( this );
})
arr[2]();

и посмотри, как меняется переменная a до вызова arr2 и после.

READ ALSO
Как сохранить таблицу html

Как сохранить таблицу html

Сделал таблицу в html (Имя,код паспорта,номер телефона, сумма, "не погашено/погашено") Суть такова что надо чтоб при нажатие на имя вылезало окошко,...

191
Двойной клик при использовании .click в JQuery

Двойной клик при использовании .click в JQuery

Есть элемент label с классом radioContainer, при клике на него должен раскрываться список selectmenu с классом meal, дело в том, что при клике происходить двойное...

124
Обход дерева dropdown menu

Обход дерева dropdown menu

Есть стандартное генерируемое меню типа dropdown, допустим на 3 уровня

137