JavaScript中声明的执行顺序是什么? 函数func(){ } var foo=“foo”; var foo=“foo”; 函数func(){ }
一开始,当func是一个函数,foo是“未定义的”,但我想知道哪一个是第一个被定义的,func或foo?我认为标识符是在遇到声明时定义的。我认为标识符是在遇到声明时定义的。javascript中的函数总是首先解析和定义的JavaScript中声明的执行顺序是什么? 函数func(){ } var foo=“foo”; var foo=“foo”; 函数func(){ },javascript,Javascript,一开始,当func是一个函数,foo是“未定义的”,但我想知道哪一个是第一个被定义的,func或foo?我认为标识符是在遇到声明时定义的。我认为标识符是在遇到声明时定义的。javascript中的函数总是首先解析和定义的 <script type="text/javascript"> function func(){ } var foo="foo"; </script> <script type="text/java
<script type="text/javascript">
function func(){
}
var foo="foo";
</script>
<script type="text/javascript">
var foo="foo";
function func(){
}
</script>
警报('before func:'+func);//将函数打印为字符串
警报('somevar:'+somevar之前);//打印未定义
函数func(){
}
var somevar=“你好”;
警报('func:'+func之后);//将函数打印为字符串
警报('somevar:'+somevar之后);//打印你好
javascript中的函数总是首先解析和定义
<script type="text/javascript">
function func(){
}
var foo="foo";
</script>
<script type="text/javascript">
var foo="foo";
function func(){
}
</script>
警报('before func:'+func);//将函数打印为字符串
警报('somevar:'+somevar之前);//打印未定义
函数func(){
}
var somevar=“你好”;
警报('func:'+func之后);//将函数打印为字符串
警报('somevar:'+somevar之后);//打印你好
变量和函数声明的标识符(以及函数代码的形式参数)在进入执行上下文时生成,实际上是在代码执行之前
在变量的情况下,正如您所注意到的,它们在该阶段用未定义的值初始化,赋值在控件到达赋值表达式后发生,例如:
<script type="text/javascript">
alert('before func: ' + func); // Print function as string
alert('before somevar: ' + somevar); // Print undefined
function func() {
}
var somevar = "hello";
alert('after func: ' + func); // Print function as string
alert('after somevar: ' + somevar); // Print hello
</script>
在上面的代码中,我们可以看到foo
标识符如何保存undefined
值,这是因为当进入函数执行上下文时,本地foo
变量被初始化
这就是为什么人们建议在函数顶部声明变量的原因之一(类似于实际发生的情况)
函数声明也被挂起,您实际上可以在声明之前使用它们,因为我们知道,它是在代码执行之前进行的,例如:
var foo = "outer";
(function () {
alert(foo); // undefined
var foo = "inner";
})();
另见:
- 过程
<script type="text/javascript">
alert('before func: ' + func); // Print function as string
alert('before somevar: ' + somevar); // Print undefined
function func() {
}
var somevar = "hello";
alert('after func: ' + func); // Print function as string
alert('after somevar: ' + somevar); // Print hello
</script>
在上面的代码中,我们可以看到foo
标识符如何保存undefined
值,这是因为当进入函数执行上下文时,本地foo
变量被初始化
这就是为什么人们建议在函数顶部声明变量的原因之一(类似于实际发生的情况)
函数声明也被挂起,您实际上可以在声明之前使用它们,因为我们知道,它是在代码执行之前进行的,例如:
var foo = "outer";
(function () {
alert(foo); // undefined
var foo = "inner";
})();
另见:
- 过程
- 在
func(); // "bar"
function func () {
return "bar";
}
有两件事正在发生
foo
和func
同时声明
func
的初始化被提升到顶部。因此函数在var
s之前初始化
所以操作的顺序是
foo
和func
已声明func
初始化为函数
对象foo
初始化为“foo”
var foo = "foo";
function func() {
}
其中,在该代码运行之后,在
有两件事正在发生
foo
和func
同时声明
func
的初始化被提升到顶部。因此函数在var
s之前初始化
所以操作的顺序是
foo
和func
已声明func
初始化为函数
对象foo
初始化为“foo”
var foo = "foo";
function func() {
}
其中,在该代码运行之后,
typeof foo===“function”
不正确。声明在执行第一条语句之前生效。为了证明,考虑<代码>警报(FO);变量foo=1。这不会因为定义了foo而导致异常失败,但也不会因为foo尚未初始化而向1发出警报。不正确。声明在执行第一条语句之前生效。为了证明,考虑<代码>警报(FO);变量foo=1。这不会因为定义了foo而导致异常失败,但也不会因为foo尚未初始化而向1发出警报。