Как изменить макет мобильной версии сайта Большого картеля

В первом примере вы просто привязываете эту функцию к событию onclick:

function() {alert(i);};

Это означает, что в событии клика js должен предупредить значение функций i-переменной addlink. Его значение будет 5 из-за цикла for ().

Во втором примере вы создаете функцию, связанную с другой функцией:

function (num) {
  return function () { alert(num); };
}

Это означает: если вызов со значением, верните мне функцию, которая будет предупреждать входное значение. Например. вызов function(3) вернет function() { alert(3) };.

Вы вызываете эту функцию со значением i на каждой итерации, поэтому вы создаете отдельные функции onclick для каждой ссылки.

Дело в том, что в первом примере ваша функция содержала ссылку на переменную, а во втором - с помощью внешней функции, которую вы заменили ссылкой фактическим значением. Это называется замыканием примерно потому, что вы «закрываете» текущее значение переменной внутри вашей функции, а не сохраняете ссылку на нее.

0
задан user11248098 23 March 2019 в 18:34
поделиться