В Javascript IIFE обозначает выражение с немедленным вызовом функции: выражение функции, которое вызывается сразу после его определения, например (function(){ /* code */ })();
1 ответ

Javascript IIFE меняет результат

Я смотрю на четвертую проблему projecteuler.net и наткнулся на любопытную особенность, которая мне интересно, если кто-нибудь мог бы объяснить. Следующий код возвращает 10001 var n = 999 * 999; //biggest product with 3 digit numbers var x; while (n&…
23 ноя '16 в 16:51
1 ответ

Когда нужно использовать IIFE и передавать параметры? Javascript

Большинство разделов моей библиотеки состоят из файлов, которые имеют такую ​​структуру, myLib.Something = (function() { function Something() { } return Something; })(); Теперь предположим, что внутри Something я использую document или же window так…
12 май '13 в 18:10
1 ответ

Случай использования немедленного вызова функции: случайное совместное использование через замыкания

var result=[]; for(var i=0;i<5;i++){ result.push(function () {return i}); } console.log(result[1]()); //5 not 1 Я думаю, что результат должен быть [0,1,2,3,4], и я не понимаю, почему значение должно быть 5. Как это работает? Я полностью сбит с то…
05 авг '14 в 16:14
1 ответ

Использование функций вне функции IIFE

У меня есть следующий метод, он находится внутри someFile.js: (function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['b'], factory); } else if (typeof exports === 'objec…
12 июн '17 в 13:44
3 ответа

Должен ли я использовать IIFE или окно загрузки для инициализации?

Работали оба следующих фрагмента кода: Использование IIFE в файле js: (function initialize() { txtInput = document.getElementById('txtInput'); txtResult = document.getElementById('txtResult'); txtInput.value = "0"; txtResult.value = "0"; }()); Вызов…
20 мар '14 в 15:10
1 ответ

Когда я записываю typeof IIFE на консоль, это объект вместо функции, почему?

У меня есть IIFE, который возвращает объект. В моем файле app.js, который я добавляю в тег сценария в index.html, я регистрирую в консоли тип своего IIFE, и это объект. Разве это не должно быть функцией? Почему typeof возвращает объект? Вот мой IIFE…
22 янв '17 в 06:07
2 ответа

Не можете прочитать свойство внутренней функции в IIFE?

var ag = (function(){ function update(at){ console.log('at::'+at); } return {hike:function(){update(2);}} })(); В этом методе я могу получить доступ к внутренней функции hike() через ссылку (ag.hike();). var ag = (function(){ function update(at){ co…
30 окт '17 в 05:57
1 ответ

Есть ли какие-либо проблемы совместимости браузера с рекурсией в именованном IIFE?

Я делаю рекурсивную операцию, и самым простым подходом будет именованный рекурсивный IIFE: (function foo(count) { //... foo(count + 1); })(0); Я знаю, что это совершенно правильный JS, но я смутно помню, что слышал о какой-то ошибке в Internet Explo…
16 июл '15 в 16:28
1 ответ

Мифрил: Почему XHR-запрос никогда не происходит из выражения, вызванного немедленно?

У меня есть две реализации таблицы, одна из которых может получать через xhr с локального сервера API, а другая - нет. Почему это происходит? Разница между ними заключается в том, что одна реализована как функция, вызываемая сразу, другая возвращает…
23 июн '17 в 03:37
1 ответ

IIFE, модули и JS

Я пытаюсь понять некоторый код: (function (exports) { exports.myProperty = "azerty"; console.log(exports) }((this.myModule = this.myModule || {}))); Что я понял из этого кода: 1) Я выполняю IIFE, и "this" представляет Window (глобальный объект). 2) …
12 июн '18 в 20:56
1 ответ

Как библиотеки javascript доступны, когда они упакованы в IIFE? Разве контекст исполнения не расположен?

В библиотеке Underscore js весь код находится внутри: (function() { //rest of library etc. }.call(this)); Я понимаю, что перенос функции () в () предназначен для целей пространства имен, и что.call(this) вызывает библиотеку при запуске, передавая об…
30 июн '16 в 13:29
0 ответов

Клонирование события-цели для использования в setState-call

Я хочу упростить обработку контролируемых входных данных в моем проекте (написано с использованием TypeScript), В настоящее время у меня есть одна функция, которая будет делать это: private handleChange = (ev: React.ChangeEvent<HTMLInputElement&g…
21 ноя '17 в 11:24
1 ответ

Uncaught Type Error: Невозможно установить свойство undefined

Вот код, это довольно просто: (function() { "use strict"; // Define our constructor this.White = function() { this.version = "1.0.0"; }; }()); // Later a = new White(); alert(a.version); В JSBin (и при запуске JShint) он работает так, как должен. Не…
15 янв '15 в 19:45
2 ответа

Переход в окно в IIFE и другие зависимости также из окна

Почему некоторые программисты переходят в глобальные window объект, который, как я понимаю, предназначен для повышения производительности и минимизации преимуществ, а также других объектов / функций зависимости из точно того же глобального пространс…
21 апр '15 в 06:24
3 ответа

Почему "this" указывает на "окно" obj при использовании оператора присваивания в iife?

Мне было интересно, почему пример вернет "глобальный", а не "obj2"? И что отличается между '(obj2.say = obj1.say)()' и '(obj2.say)()'? Вот код: var text = 'global'; var obj1 = { text: 'obj1', say: function () {console.log(this.text)}}; var obj2 = { …
08 авг '17 в 03:13
1 ответ

Зачем использовать IIFE в этой ситуации?

В статье о разработке плагинов для браузера они используют этот код: window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); Почему они используют IIFE, а не говорят: window.browser = window.msBrowser || win…
05 апр '17 в 20:16
2 ответа

Преобразовать модуль IIFE во что-то импортируемое RollupJS

Я использую RollupJS в качестве компоновщика, и он может читать CommonJS (через плагин) или модули ES6. Но этот модуль, кажется, в формате UMD, и я ищу быстрый способ, которым я могу отредактировать его (без замены большого количества строк), чтобы …
27 дек '17 в 21:30
1 ответ

Вернуть переменную как свойство в IIFE

Я пытаюсь вернуть набор переменных после инициализации IIFE в качестве свойства. Проблема в том, что если я связываю переменную напрямую, я получаю пустой объект. Если я свяжу это с помощью функции, я получу желаемый результат. var Application = (fu…
09 янв '17 в 07:07
3 ответа

Это нормально, чтобы заменить окно с глобальным в IIFE?

При этом что-то кажется неправильным или грязным, но это кажется более семантическим, чем использование экспорта или окна. Это нормально? (function(global){ var foo,bar; foo = 'Private Var'; global.bar = 'Hello World'; })(window);
12 ноя '12 в 19:46
4 ответа

Почему этот немедленно вызванный метод возвращает объект окна?

Почему сразу вызванный метод возвращает window объект как this, var o = {}; o.foo = function () { console.log(this); }(); //Window {…} но при выполнении позже метод возвращает объект o (как я бы ожидал в обоих случаях)? var o = {}; o.foo = function …
14 апр '14 в 01:22