2014-11-13 3 views
0

Я очень новичок в Javascript, и я читал о closures on MDN. Хотя я понял первые два фрагмента кода по этой ссылке, меня смущает синтаксис, использованный в третьем примере, который я скопировал здесь.Новичок: Пояснение Пример закрытия Javascript на MDN

var getCode = (function(){ 
     var secureCode = "0]Eal(eh&2"; 

     return function() { 
      return secureCode; 
     }; 
    })(); 

    getCode(); // Returns the secureCode 

Какова цель оберточной внешнюю функцию в скобках следуют пустые скобки и точка с запятой? Что означает этот синтаксис или что он служит? Почему бы не написать его следующим образом?

var getCode = function() { 
     var secureCode = "0]Eal(eh&2"; 

     return function() { 
      return secureCode; 
     } 
    }; 

    getCode(); // Returns the secureCode 
+0

Ответ на ваш первый вопрос: ** нет **. В первом наборе круглых скобок есть функция; это не то же самое (вообще), поскольку в круглых скобках отсутствует * ничего *. – Pointy

+0

Если вы нажмете F12, чтобы открыть инструменты dev, и вставьте в свой первый пример, вы получите синтаксическую ошибку – acbabis

+0

ребята, спасибо. Я просто обновил свой вопрос для ясности. Является ли моя версия фрагмента кода не той же целью, что и исходный фрагмент? – katboo

ответ

1

Точка примера состоит в том, что secureCode подобно частной переменной. После выполнения функции в скобках secureCode не входит в объем и поэтому не может быть записано; но возвращаемая функция все еще имеет доступ к переменной и может использоваться как получатель.

0

Другими словами, вы инкапсулируете защищенную переменную кода в CONST. Он не может быть записан и, следовательно, изменен, но он доступен через геттер для чтения.

Смежные вопросы