<分区>
我一直认为浏览器会逐个字符串从上到下执行 JavaScript 代码(您可能希望脚本语言具有这种行为)。但显然这里不是这种情况:
//工作完美
<script>
test();
function test() { alert('test'); }
</script>
但是如果我将函数声明为变量,它会失败并显示“ Uncaught ReferenceError :未定义测试”:
<script>
test();
var test = function() { alert('test'); }
</script>
所以javascript引擎有时并没有从上到下执行代码。它可以以某种方式预加载函数,即使它们是在最后声明的。 它究竟是如何工作的,为什么?