注意:解释在代码注释中!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>js作用域1</title>
</head>
<body>
<script type="text/javascript">
function a(){
function b(){
function c(){
}
c();
}
b();
}
a();
//下边我来解释一下上边的代码(每个函数在执行前,就是在定义的时候会形成自己的执行上下文)
//执行步骤如下:
//1、a函数定义的时候会形成:[GO]
//2、a函数执行时:[aAO,GO]
//3、b函数定义的时候会形成:[aAO,GO]
//4、b函数执行时:[bAO,aAO,GO]
//5、c函数定义的时候会形成:[bAO,aAO,GO]
//6、c函数执行时:[cAO,bAO,aAO,GO]
//当一个函数执行完后它的AO就会被删除
//所以当c、b、a 函数 依次执行完成后,cAO,bAO,aAO依次被删除
//所以最后就只剩GO了
//注意:如果一个函数执行完了。再执行一次,形成的AO和以前的AO一样吗?
//答案是:一样
</script>
</body>
</html>