Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 未捕获引用错误:未定义boo_Javascript - Fatal编程技术网

Javascript 未捕获引用错误:未定义boo

Javascript 未捕获引用错误:未定义boo,javascript,Javascript,如何确保在调用boo之前定义了它? 我不想被迫重新安排JavaScript,以便在调用boo()之前定义boo=function boo() boo=函数(){ console.log('Yay!') }您需要从函数表达式更改为函数声明。 提升规则在函数声明时起作用,但在函数表达式时不提升函数定义 简单地说,Javascript运行时分两次运行,在第一次运行时,它将查找所有声明并创建所有声明的映射。不执行任何代码在下一个过程中,对代码进行求值,如果发现任何未知声明,它将抛出引用错误,因为它无法

如何确保在调用boo之前定义了它? 我不想被迫重新安排JavaScript,以便在调用
boo()
之前定义
boo=function

boo()
boo=函数(){
console.log('Yay!')

}
您需要从函数表达式更改为函数声明。

提升规则在函数声明时起作用,但在函数表达式时不提升函数定义

简单地说,Javascript运行时分两次运行,在第一次运行时,它将查找所有声明并创建所有声明的映射。不执行任何代码在下一个过程中,对代码进行求值,如果发现任何未知声明,它将抛出引用错误,因为它无法解析该引用

在你的情况下,在第一关没有任何声明。因此,对函数的引用不会存储为函数表达式,其中变量被指定为对函数的引用,该函数将在下一个过程中进行计算

在第二个过程中,当代码求值开始时,boo变量已经声明为全局变量,并且具有
未定义的值。语句
boo()
未定义的变量调用函数。所以,你得到了错误。希望它能消除任何困惑

boo();
函数boo(){
console.log('Yay!')

}
您必须将其声明为函数,而不是变量

boo();
函数boo(){
console.log('Yay!')

}
请阅读我告诉我的学生,我有这么高的代表性,因为我问了很多愚蠢的问题。这是一个函数表达式,所以只有当那一行是reached@aw04:当您将鼠标悬停在向下箭头上方时,给出的向下投票的第一个标准是“此问题不显示任何研究成果”。是的,这是非常相关的。我忘了提到它是foo.bar=function(),而不仅仅是boo=function。因此,函数名提升不是一个选项(我不认为)。
foo
在第一个过程中找不到,因为正如您所指出的,没有声明语法。如果在第一次过程中发现并创建了一个全局错误,那么错误将是TypeError而不是ReferenceError不幸的是,OP最初决定询问一些与实际问题无关的问题,这样一来,你所做的工作就过时了,我想我们现在必须假设这个问题是相关的。@squint,从现在开始我会更加小心。