Javascript 为什么这个匿名函数会看到什么';它在下面吗?
为什么第一个匿名函数可以“看到”它下面的函数,例如Javascript 为什么这个匿名函数会看到什么';它在下面吗?,javascript,Javascript,为什么第一个匿名函数可以“看到”它下面的函数,例如foo?难道它不应该只看到它上面的东西吗?谢谢 window.onload = function(){ foo(); } function foo(){ alert("hello"); } 见: JavaScript中的函数声明是函数定义的基础。您可以在声明函数之前使用它: hoisted(); // logs "foo" function hoisted() { console.log("foo"); } 这是由于
foo
?难道它不应该只看到它上面的东西吗?谢谢
window.onload = function(){
foo();
}
function foo(){
alert("hello");
}
见:
JavaScript中的函数声明是函数定义的基础。您可以在声明函数之前使用它:
hoisted(); // logs "foo"
function hoisted() {
console.log("foo");
}
这是由于。在JavaScript中,函数声明被“提升”到其作用域的顶部,正如您所注意到的,这允许调用文件中任何位置声明的函数。函数(和变量)声明在执行任何代码之前被处理,也称为“提升”。@Barmar尽管使用了相同的语言机制,另一个问题是不同的。我会责怪移动客户端中的缓存。不仅仅是函数声明,变量声明(不是初始化值)也被提升到其封闭范围的顶部。因此,
var f=function(){…}
也将提升。不是值(函数),而是变量(f
)。不是赋值,而是声明。