Доступ к переменным IIFE из вложенных функций

У меня есть IIFE с вложенной функцией внутри. Внутри и снаружи вложенной функции есть переменная word. Как я могу получить доступ к переменной word вне вложенной функции, а не внутри?

Код:

(function (){

    let word = "Hello";

    function sayHello(){
        let word = "Greetings";
        console.log(word + " Everyone!"); // This is using the inside word variable instead of the outside one. How can I specify JS to use the outside one instead?
    }

    sayHello();

})();


person Bill    schedule 13.05.2018    source источник
comment
Чтобы связаться с ними обоими напрямую, один или другой придется переименовать. Связано: Затенение переменных и Доступ к локальной переменной JavaScript с одинаковым именем во внутренней и внешней области   -  person Jonathan Lonowski    schedule 13.05.2018


Ответы (1)


Передайте внешнюю переменную в качестве параметра, чтобы вы могли ссылаться на нее отдельно от внутренней переменной:

(function() {
  let word = "Hello";
  function sayHello(outerWord) {
    let word = "Greetings";
    console.log(outerWord + " Everyone!");
  }
  sayHello(word);
})();

В качестве альтернативы просто дайте переменным разные имена, если вам это разрешено - затенение обычно является плохой идеей именно по этой причине.

person CertainPerformance    schedule 13.05.2018