代码解释在注解中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>js作用域03</title>
</head>
<body>
<script type="text/javascript">
//首先说一下,运行打印结果:101 102
//下面,我就来解释一下
//执行步骤如下:
//1、a函数定义的时候会形成:[GO]
//注意:在这里是 return b; 和 var demo = a(); a函数执行完就直接把b函数赋给demo
//2、a函数执行时:[aAO,GO]
//3、(第一个demo())执行时:[bAO,GO]
//4、执行完时:[aAO,GO]
//5、(第二个demo()执行时)[bAO,GO] !!!!!注意:这里是重点,当第二个demo执行时产生的bAO,和第一个产生的一样
//所以这就是为什么运行结果是102不是101的原因了
function a(){
var num = 100;
function b(){
num++;
console.log(num);
}
return b;
}
var demo = a();
demo();
demo();
</script>
</body>
</html>