在浏览器中为一个网页执行了多少个JavaScript程序?
JavaScript程序由语句和函数声明组成。执行JavaScript程序时,将发生以下两个步骤: 将扫描代码以查找函数声明以及每个函数。声明是“执行的”(通过创建函数对象),并且创建了对该函数的命名引用(以便可以在语句中调用此函数) 语句按顺序执行(求值)(如代码中所示) 因此,这可以正常工作: <script> foo(); function foo() { return; } </script> 尽管“ foo”函数在声明之前被调用,但是它起作用,因为该函数声明是在语句之前求值的。 但是,这不起作用: <script> foo(); </script> <script> function foo() { return; } </script> 将引发ReferenceError(“未定义foo”)。得出这样的结论:网页HTML代码中的每个SCRIPT元素都代表一个单独的JavaScript程序,并且每当HTML解析器遇到SCRIPT元素时,它都会在该元素中执行该程序(然后执行该程序,解析器将转到SCRIPT元素后面的HTML代码)。 再一次,这确实可行: <script> function foo() { return; } </script> <script> foo(); </script> 我在这里的理解是,全局对象(在全局执行上下文中用作变量对象)一直存在(并保持),因此第一个JavaScript程序将创建函数对象并为其进行引用,然后第二个JavaScript程序将使用该引用来调用该函数。因此,所有JavaScript程序(在单个网页内)“使用”相同的Global对象,并且随后运行的所有JavaScript程序都可以观察到一个JavaScript程序对Global对象所做的所有更改。 现在,请注意... <script> // assuming that foo is not defined foo(); alert(1); </script> …