В основном, в первом примере вы привязываете i
внутри обработчика onclick
непосредственно к i
вне обработчика onclick
. Поэтому, когда i
вне обработчика onclick
изменяется, i
внутри обработчика onclick
тоже изменяется.
Во втором примере вместо привязки к num
в onclick
, вы передаете его в функцию, которая затем привязывает его к num
в обработчике onclick
. Когда вы передаете его в функцию, значение i
будет скопировано , а не связано с num
. Поэтому, когда i
изменяется, num
остается неизменным. Копия происходит потому, что функции в JavaScript являются «замыканиями», что означает, что как только что-то передается в функцию, оно «закрыто» для внешней модификации.