Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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
基于执行顺序的HTML内部JavaScript_Javascript_Html - Fatal编程技术网

基于执行顺序的HTML内部JavaScript

基于执行顺序的HTML内部JavaScript,javascript,html,Javascript,Html,以下代码显示AAA、BBB、CCC、EEE、FFF。它跳过DDD。 有人能帮我解释为什么跳过DDD吗。多谢各位 功能1(“AAA”); 函数func1(x){alert(x);} 功能1(“BBB”); 功能2(“CCC”); 函数func2(x){alert(x);} func2(“DDD”); 功能3(“EEE”); 函数func3(x){alert(x);} func3(“FFF”); 它“跳过”CCC,而不是DDD。原因显示在浏览器控制台中: Uncaught ReferenceEr

以下代码显示AAA、BBB、CCC、EEE、FFF。它跳过DDD。 有人能帮我解释为什么跳过DDD吗。多谢各位


功能1(“AAA”);
函数func1(x){alert(x);}
功能1(“BBB”);
功能2(“CCC”);
函数func2(x){alert(x);}
func2(“DDD”);
功能3(“EEE”);
函数func3(x){alert(x);}
func3(“FFF”);
它“跳过”CCC,而不是DDD。原因显示在浏览器控制台中:

Uncaught ReferenceError: func2 is not defined 未捕获引用错误:未定义func2 函数声明只提升到它们所在脚本的顶部,浏览器不会加载所有脚本,进行提升,然后运行分步代码

所以从

<script>
  func2('CCC');
</script>

功能2(“CCC”);

…没有
func2
,因此失败。(当然,稍后添加了
func2
,因此
func2('DDD')
起作用,我们看到了DDD。)

您的意思是跳过
CCC
而不是
DDD
,因为您试图在函数定义
func2
之前调用它,所以它完全符合逻辑,因此,如果您检查控制台,您可以看到描述以下内容的错误消息:

未捕获引用错误:未定义func2


功能1(“AAA”);
函数func1(x){alert(x);}
功能1(“BBB”);
功能2(“CCC”);
函数func2(x){alert(x);}
func2(“DDD”);
功能3(“EEE”);
函数func3(x){alert(x);}
func3(“FFF”);

我不明白,如果该方法未在使用过程中声明,为什么CCC会运行。正确的声明是这样的

<!DOCTYPE html>
<html>
<head>
    <script>
        function func1(x) {alert(x);}
        func1('AAA');
        func1('BBB');
    </script>
</head>
<body>
    <script>
        function func2(x) {alert(x);}
    </script>
    <script>
        func2('CCC');
    </script>
    <script>
        func2('DDD');
    </script>

    <script>
        function func3(x) {alert(x);}
        func3('EEE');
        func3('FFF');
    </script>
</body>

函数func1(x){alert(x);}
功能1(“AAA”);
功能1(“BBB”);
函数func2(x){alert(x);}
功能2(“CCC”);
func2(“DDD”);
函数func3(x){alert(x);}
功能3(“EEE”);
func3(“FFF”);


对不起,我的英语很差。

实际上是
CCC
没有显示,因为
func2
还没有定义,不知道你在endGrammar问题上看到了什么,没有提到函数,这个答案最多是不完整的。“正确”并不能成为一个好答案。帮助询问者完全理解问题,在这种情况下,如果不提及函数提升(“您试图在函数[sic]定义之前调用函数”,当在OP的代码
func1
定义之前也被调用时,这是没有多大帮助的,但效果很好)-很好的回答。谢谢你的干预@Jordan。。更新了我的答案。这就引出了我在标题部分的问题,为什么要调用
AAA
?因为
func1
还没有定义?没错,我错了,跳过了CCC。那么,是不是因为每个func2调用都在一个单独的脚本标记中?@Roljhon它是在同一个脚本块中定义的。当它被调用时,它已经被加载了。如果将示例更改为与
func2
相同的情况,则会看到相同的提升问题:
func1('AAA');函数func1(x){console.log(x);}func1('BBB')@Roljhon:废可乐说了什么。在回答中,是“函数声明只被提升到它们所在脚本的顶部。”
func1
func1('AAA')
is在同一脚本中。@T.J.Crowder是的,我不熟悉这个词,抱歉:)谢谢!