Какой объект вместо window имеет (глобальную) функцию foo в качестве свойства, если foo определен в файле javascript и включен из html?

#javascript #html #reflection

#javascript #HTML #отражение

Вопрос:

Если я помещу следующий код в html-файл:

 <script>
  function foo()
  {
  }

  alert("foo" in window);
</script>
  

true показано в диалоговом окне. (см. https://jsfiddle.net/f1t2c3kL например.) Но если я перенесу foo определение в file.js и поместлю

 <script type="text/javascript" src="file.js"></script>
  

вместо этого в заголовке html отображается false .

Что я должен использовать вместо window , чтобы отображалось предупреждение true ?

Ответ №1:

Порядок имеет значение: сначала загрузка, затем вызов.
(И разместите свои скрипты перед закрывающим </body> тегом)

 <script type="text/javascript" src="file.js"></script>

<script>
    alert("foo" in window); // true
</script>

</body>
  

Комментарии:

1. Это порядок, в котором я наблюдаю false .

2. Неважно, проблема заключалась в том, что моего скрипта не было в теле.