Дорогие программисты,есть маленький кусок кода,который я,к сожалению,не понял,а именно : почему на выходе получается function, в коде нет метода 2,почему работает?
var arr = ["a", "b"];
arr.push(function() {
alert( this );
})
arr[2](); // "a","b",function
Нумерация в массиве начинается с нуля, а квадратные скобки говорят о том, что мы обращаемся к элементу массива
const a = [1, "2", function foo() {}, {}];
a[0]; // number
a[1]; // string
a[2]; // function
a[3]; // object
В вашем случае элемент ( функция ) еще и сразу же вызывается
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 и после.
Продвижение своими сайтами как стратегия роста и независимости