@Roweb
Верстальщик

Как сделать правильно и лаконично?

Этот код выдаст ошибку, так как при объявлении функции переменной a не существовало. Как исполнить alert(a) в функции f при условии, что объявление функции f должно быть выше объявления переменной a
function f(){
 a++;
 alert(a);
}
let a = 20;
f();


Нормальное решение? Можно ли лучше? В программе функция f будет использоваться всегда с аргументом a, поэтому напрягает лишний код и запутанность
function f(arg){
 arg++;
 alert(arg);
}
let a = 20;

f(a);
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
wapster92
@wapster92 Куратор тега JavaScript
let f = arg => alert(++arg)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Robur
@Robur
Знаю больше чем это необходимо
нормальное.
Удачи вам в яваскрипте с таким перфекционизмом.
Ответ написан
Комментировать
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Первый вариант не выдаст ошибок и эквивалентен второму. Другое дело, что область видимости, где определена let a = 20; может быть отличной от области объявления function f() {...}, только тогда это приведёт к ошибке.
Ответ написан
Нет, не нормальное, глаз сразу задергался. Годный вариант вам предоставил WapSter выше. Насчет передачи аргументов - это наоборот делает код чище и понятнее, поелику лазать по коду, гадая, в какой области видимости у вас валяется переменная, которую вы неявно модифицируете, ни у кого не будет желания. Передавая же переменную по значению, вы делаете функцию чище и избавляетесь от неожиданных изменений переменной в глобальном скоупе. Это хорошая практика.

Даже если у вас функция вложена в функцию (типа подпроцедуры, так иногда оч красиво делать), все равно стоит трижды подумать, прежде чем модифицировать данные из вышестоящего скоупа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы