Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我可以调用稍后在同一脚本块中声明的函数,但不能调用稍后在脚本块中声明的函数?_Javascript - Fatal编程技术网

Javascript 为什么我可以调用稍后在同一脚本块中声明的函数,但不能调用稍后在脚本块中声明的函数?

Javascript 为什么我可以调用稍后在同一脚本块中声明的函数,但不能调用稍后在脚本块中声明的函数?,javascript,Javascript,我在cod以下使用此选项,其效果如预期: <script> function_two(); function function_two() { alert("The function called 'function_two' has been called."); } </script> <script> function_two(); </script> <script> function funct

我在cod以下使用此选项,其效果如预期:

<script>
  function_two();
  function function_two() {
    alert("The function called 'function_two' has been called.");
  }
</script>
<script>
  function_two();
</script>

<script>
  function function_two() {
    alert("The function called 'function_two' has been called.");
  }
</script>

函数二();
函数二(){
警报(“调用了名为'function_two'的函数”);
}
但当我应用下面的代码时,它并没有按预期工作:

<script>
  function_two();
  function function_two() {
    alert("The function called 'function_two' has been called.");
  }
</script>
<script>
  function_two();
</script>

<script>
  function function_two() {
    alert("The function called 'function_two' has been called.");
  }
</script>

函数二();
函数二(){
警报(“调用了名为'function_two'的函数”);
}
有人能说为什么吗?

这是因为<代码>函数声明被提升到脚本顶部。在第一种情况下,实际发生的情况是:

<script>
  function function_two() {
      alert("The function called 'function_two' has been called.");
  }

  function_two();
</script>

函数二(){
警报(“调用了名为'function_two'的函数”);
}
函数二();
函数
声明已悬挂在
函数_two()
调用上方

在第二种情况下,
function\u two()
包含在不同的
script
元素中,并且
function
声明不能被提升到它上面-在这种情况下,代码保持相同的顺序,调用时
function\u two()
最终不存在。

这是因为<代码>函数声明被提升到脚本顶部。在第一种情况下,实际发生的情况是:

<script>
  function function_two() {
      alert("The function called 'function_two' has been called.");
  }

  function_two();
</script>

函数二(){
警报(“调用了名为'function_two'的函数”);
}
函数二();
函数
声明已悬挂在
函数_two()
调用上方


在第二种情况下,
function\u two()
包含在不同的
script
元素中,并且
function
声明不能被提升到它上面-在这种情况下,代码保持相同的顺序,调用时
function\u two()
最终不存在。

由于javascript的提升,声明总是在执行之前被推到作用域的顶部(你看不到,js本身就是这样做的)。这就是为什么在声明函数之前可以在第一个示例中使用该函数


在第二个示例中,使用单独的脚本元素进行函数声明和使用。这是不可能的,因为在浏览器开始编译第二个脚本元素之前,第一个脚本元素get被编译和执行。

由于javascript的提升,声明总是在执行之前被推到作用域的顶部(你看不到,js本身就是这样做的)。这就是为什么在声明函数之前可以在第一个示例中使用该函数


在第二个示例中,使用单独的脚本元素进行函数声明和使用。这是不可能的,因为在浏览器开始编译第二个脚本元素之前,第一个脚本元素get已经编译并执行。

如果他/她要检查控制台,第二个脚本元素将弹出一个错误,如果他/她要检查控制台,第二个脚本元素将弹出一个错误