JS 作用域 闭包

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.作用域链

查找变量和函数的时候的路径


Paste_Image.png

4.闭包

每个人的理解都不一样!!

一个函数,如果它访问了它的外部变量,那么这个函数就是一个闭包
特性:闭包访问外部变量的时候,总是获取的是外部变量的最新的值!

一个函数,如果访问外部函数的局部变量,这样的函数,就是闭包!!

Paste_Image.png

1.回调函数
返回或是接受一个函数的函数就是高阶函数

Paste_Image.png
Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容