1、变量必须先声明、后使用
函数可以“先使用、后声明”,原因是函数有“预加载”过程(函数声明先于其他执行代码进入内存)。本质还是函数的声明在前,使用在后。
2、内部环境可以访问外部环境的变量,反之不然
<script type="text/javascript">
var age = 20;
function f1() {
var height = 170;
console.log(age); //内环境访问外环境 变量
}
f1();
console.log(height); //外环境访问内环境 变量 (不允许)
</script>
效果图:
3、变量的作用域是声明时决定的,而不是运行时
<script type="text/javascript">
//变量的作用域是“声明时”决定的,而不是运行时
var food = "milk";
function f1() {
//访问food变量,当前环境没有food变量,但是其外部环境有该变量
console.log(food);
}
function f2() {
var food = "brand";
f1();
}
f2();
</script>
效果图:
AO活动对象
AO: Active Object 活动对象
执行环境:
js代码执行是有环境的
该环境定义了其有权访问的其他数据
环境有一个与之关联的“活动对象AO”
环境中所有的变量和函数都是活动对象AO的属性
全局环境是最外围的执行环境,活动对象是window对象
执行环境中的代码执行完毕后就被销毁