如下代码,第一次弹出a,因为解析器里找到var a,赋予a变量undefined,弹出undefined
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js作用域</title>
<script type="text/javascript">
alert(a); //第一次弹出a为undefined
var a = 3;
alert(a);//弹出3
</script>
</head>
<body>
</body>
</html>
现在给拆分到2个script块里
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js作用域</title>
<script type="text/javascript">
alert(a); //出错,解析器找不到a变量
</script> <script type="text/javascript">
var a = 3;
alert(a);//弹出3
</script>
</head>
<body>
</body>
</html>
不同的script块,虽然同是全局变量,但是上面的先解析,解析执行完成了再执行下面的,而上面的script中没有对变量a进行定义,所以代码出错,浏览器提示报错。