1.全局变量
定义在函数外部的变量都是全局变量。
声明提前
<script type="text/javascript">
var a; //声明提前
alert(a);
a = 20; //赋值仍然在原来的位置
</script>
2.局部变量
定义在函数内部的变量都是局部变量。
<script type="text/javascript">
function f(){
alert(v); // 弹出:undefined
var v = "abc"; // 声明局部变量。局部变量也会声明提前到函数的最顶端。
alert(v); // 弹出:abc
}
alert(v); //报错。因为变量v没有定义。 方法 f 的外部是不能访问方法内部的局部变量 v 的。
</script>
3.作用域链
查找变量和函数的时候的路径
4.闭包
每个人的理解都不一样!!
一个函数,如果它访问了它的外部变量,那么这个函数就是一个闭包
特性:闭包访问外部变量的时候,总是获取的是外部变量的最新的值!
一个函数,如果访问外部函数的局部变量,这样的函数,就是闭包!!
1.回调函数
返回或是接受一个函数的函数就是高阶函数