Что такое «глобальный» объект в NodeJS

Я только что видел странное поведение ключевого слова 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?

43
задан cнŝdk 4 December 2017 в 15:34
поделиться