В таблице поддержки новых 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;
}
Комментариев нет:
Отправить комментарий