Как передать переменную в вызванную функцию?

const f1 = function(data) {
   var a = data.modifyMethod()   
   f2 ()

}

const f2 = function() {
  console.log(a)
  return a
}


Функция f2 не видит переменную a .
Я понимаю, что связано что-то с замыканиями, но никак не могу понять - что нужно сделать, чтобы f2 видело a, не передавая ее в качестве параметра функции?
Вроде как доступ к областям видимости родительских функций (тех кто вызвал данную функцию) должен ведь быть.

(функцию f1 экспортирую в качестве модуля)
  • Вопрос задан
  • 2997 просмотров
Решения вопроса 2
longclaps
@longclaps
Ух, поклонники глобальных переменных фестиваль констант устроили. Зачем, спрашивается?
function foo() {
    bar.a = 42;
}

function bar() {
    console.log(bar.a)
}

foo();
bar();
Ответ написан
4mobile
@4mobile
WEB developer
Странная задача, но можно и так ее решить
function f1 (data) {
   const a = {data: data}
   const f3 = f2.bind(a)
   f3()
}

function f2(){
  console.log(this.data)
}

f1('dddddd');

Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@andreysuha
Что то знаю
Как вариант объявит ее в глобальном скопе

var a = 1
const f1 = function(data) {
   f2 (data)
}

const f2 = function(data) {
  console.log(a)
  return a
}
Ответ написан
NeiroNx
@NeiroNx
Программист
Область видимости переменной
var a;
const f1 = function(data) {
   a = 1   
   f2 ()

}

const f2 = function() {
  console.log(a)
  return a
}
Ответ написан
@Sashqa
let a;
const f1 = function (data) {
  a = 1   
  f2 ()

}

const f2 = function() {
  console.log(a)
  return a
}
f1(data);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы