Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Что такое global.lacksGlobal?

В таблице поддержки новых js-фич обнаружил такой тест:
"global" global property is global object
var actualGlobal = Function('return this')(); actualGlobal.__system_global_test__ = 42; return typeof global === 'object' && global && global === actualGlobal && !global.lacksGlobal && global.__system_global_test__ === 42;
Что здесь происходит:
Получаем глобальный объект как this в вызове функции вне строгого режима Создаём в нём глобальное свойство __system_global_test__ Проверяем, что у нас вообще есть global И он не ложный И он совпадает с настоящим глобальным скоупом и !global.lacksGlobal и он содержит то свойство, которое мы создали с правильным значением
Вопрос: что делает проверка !global.lacksGlobal?
Ещё интересно, есть ли возможность, что global есть, но ложный (видимо, null три такой проверке) - вроде тоже странная ситуация, но не лишена смысла.


Ответ

Данная проверка добавлена на случай того, чтобы не спутать настоящий global, с полифилом, который добавляется непосредственно на страницу проверки
if (typeof global === "undefined") { this.lacksGlobal = true; window.global = this; }

Комментариев нет:

Отправить комментарий