Мне показалось, что я понял природу вымышленных выражений функции (IIFE), но теперь я понимаю, что нет.Область названного имени IIFE
Я создал IIFE в куске кода (на веб-странице, используя JQuery, как это бывает). Однако, если я называю эту функцию и пытаюсь вызвать эту функцию из охватывающей области, я получаю «неопределенную» ошибку?
Живой код ведет себя по-разному в IE11 и Firefox 38, что делает вещи еще более запутанными. Тем не менее, я создал простой тест JSfiddle здесь-
https://jsfiddle.net/ktqq4uat/
и это согласуется между браузерами.
Я думал, что эти две линии-
(function myFunction2() {
...
(myFunction3= function() {
...
были в значительной степени эквивалентны, но я получаю неопределенную ошибку «myFunction2» только.
Я оценил бы некоторую помощь understanding-
1) Почему (функция myFunction2() {... скрывается имя функции, а также его внутренняя сфера. Какова область этого имени?
2) Почему myFunction2 и myFunction3 выше ведут себя по-другому.
Rgds
IIFE - это функция, заключенная в круглые скобки и недоступная вне их. Хотя вы можете называть их внутри. – Rajesh
Вы не можете выполнить 'testObject.newFunction2 = myFunction2;', его не видно за пределами –
Что, IE11 все еще не исправил эту ошибку IE6? – Bergi