В браузере есть объект window
, для которого все переменные, созданные скриптами, являются свойством, поэтому в браузере this.name
"фактически" window.name
, так как this
относится к window
в объеме функции.
Теперь WebStorm запускает этот код, как если бы это было приложение NodeJS, это замечательно, так как WebStorm не требует запуска браузера в фоновом режиме и может просто использовать любой интерпретатор узлов в переменной PATH
.Но у NodeJS нет объекта window
, для которого все переменные являются свойством, поэтому он не может найти this.name
.this
относится к модулю, который пуст, поскольку вы не находитесь внутри модуля.