2015-12-25 3 views
1

Я изучаю Javascript, и сейчас я смотрю лекцию об этом. Один из примеров такой лекции;Почему this.bar возвращает другой результат в webstorm?

function foo(){ 
    console.log(this.bar); 
} 

var bar = "bar1"; 
var o2 = { bar: "bar2", foo: foo}; 
var o3 = { bar: "bar3", foo: foo}; 

foo();  // bar1 
o2.foo(); // bar2 
o3.foo(); // bar3 

Это работа, которая предусмотрена в комментариях при попытке запуска на консоли Google Chrome. Но я работаю над Webstorm, и я понял foo(); возврат не определено. Вероятно, это foo(); не вызывается из глобального, но почему это работает на Webstorm так. ECMAscript 5.1, и я изменился и попробовал разные версии, но результат был таким же. Спасибо за любую помощь.

Результат консоли Webstorm;

undefined 
bar2 
bar3 
+0

В первом случае в браузере это относится к окну и как 'var bar' определено в глобальном контексте, оно принадлежит' window', это может быть не так в вашей среде IDE. – Rayon

+0

'foo' никогда не возвращает ничего, кроме 'undefined'. Нет инструкции 'return'. Вы имели в виду, что Chrome печатает на консоли, а Webstorm - нет? – zvone

+0

@zvone Нет, это не относится к консоли. Я узнал из ответа, что у файлов node.js есть собственные модули, поэтому var bar = .. и т. Д. Относится к области локального модуля. Вот почему я принимаю разные результаты. – alpersilistre

ответ

0

Если вы не используете JS на стороне клиента, WebStorm использует node.js. Поведение этого кода объясняется here.

Смежные вопросы