Нет, функция вызывается только при явном вызове с myFunction(y)
. После его вызова возвращаемое значение сохраняется в переменной x
. Затем внутри l oop на каждой итерации происходит только то, что существующая переменная x
сравнивается с index
.
Ваш первый код более эффективен.
Ссылка на переменную сама по себе приведет к вызову функции и возможным побочным эффектам, только если переменная является свойством глобального объекта и является геттером:
Object.defineProperty(window, 'foo', {
get () {
console.log('function running');
}
});
foo;
foo;
foo;
Это чрезвычайно необычно.