node [file.js] выдает другой результат при запуске браузера и nodejs .editor - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть фрагмент кода ниже в файле test.js

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

    var bar = "bar1";
    var obj = {bar: "bar2"};

    foo();
    foo.call(obj);

, когда я запускаю 'node test.js', я получаю результат

undefined 
bar2

, когда я бегу вузел .editor, я получил результат

bar1 
bar2

Я думаю, что второй результат верен, но что не так с первым способом?Потому что я всегда делаю первый путь.

в чем разница между ними?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Проще говоря, когда вы запускаете свой код с помощью node test.js, Node JS будет require('test.js') запускать его. Но когда вы используете режим REPL, введенный вами код будет выполняться непосредственно в REPL.

При использовании require переменные в вашем test.js не будут привязываться как глобальные переменные. Так что не может получить доступ как this.bar

0 голосов
/ 15 сентября 2018

Я думаю, что при использовании 'node test.js', узел создает оболочку для кода test.js, поэтому глобальная переменная bar отсутствует.

в режиме .edit в глобальной области видимости определена переменная bar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...