Я только что видел странное поведение ключевого слова this
в среде NodeJS. Я перечисляю их с кодом. Я запустил этот код с NodeJS v6.x
, с одним файлом JavaScript
.
При тестировании с одной строкой кода следующим образом, с оператором 'use strict'
или без него, это указывает на пустой объект {}
.
console.log(this)
Но, когда я запускаю оператор внутри самовыполняющейся функции, например,
(function(){
console.log(this);
}());
Он печатает действительно большой объект. Мне кажется, объект контекста глобального исполнения, созданный средой NodeJS
.
И при выполнении вышеупомянутой функции с оператором 'use strict'
, как ожидается, он печатает undefined
(function(){
'use strict';
console.log(this);
}());
Но, работая с браузером (я тестировал только с Chrome
), первые три примера дают объект window
, а последний дает undefined
, как и ожидалось.
Поведение браузера вполне понятно. Но, в случае NodeJS
, не создает ли контекст выполнения, пока я не обернусь внутри функции?
Итак, большая часть кода в NodeJS
выполняется с пустым глобальным object
?