JavaScript程序运行顺序:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数预解析</title>
<script type="text/javascript">
function btn1(){
alert("ok!")
}
var a = 12;
btn1();
alert(a);
</script>
</head>
<body>
</body>
</html>
执行这段代码,很明显从上往下执行,先弹出ok,在弹出a的值;
但是下面的代码在运行时,却跟预期结果不一致:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数预解析</title>
<script type="text/javascript">
btn1();
alert(a);
function btn1(){
alert("ok!")
}
var a = 12;
</script>
</head>
<body>
</body>
</html>
运行结果为:先弹出ok,在弹出undefined,程序并没有报错;js程序在执行的时候,先整体读取文件,然后将定义的函数和变量声明提前,所以在执行btn1();函数调用时,可以正常调用;执行到alert(a);语句时,可以查找到a,但是并未找到a的赋值语句,注意提前的是变量的声明,并不是变量的赋值语句,即var a;语句,而不是var a = 12;所以程序运行到alert(a);语句时,弹出undefined就不奇怪了。。。