美文网首页
JS高级-闭包、沙箱

JS高级-闭包、沙箱

作者: 哎呦呦胖子斌 | 来源:发表于2018-11-08 08:20 被阅读0次
作用域,作用域链,预解析

变量:局部变量、全局变量

作用域:变量的使用范围

js中没有块级作用域,一对括号中定义的变量,这个变量可以在大括号外面使用,但函数中定义的变量是局部变量

{

var num=10;

}

这就是个全局变量

作用域链:变量的使用,从里向外,层层的搜索,搜索到了就可以直接使用了,但如果搜索到了0级作用域的时候还没有找到这个变量,结果就报错。

预解析:在浏览器解析代码之前,把变量的声明和函数的声明提前到该作用域的最上面。

闭包

闭包的概念:函数A中,有一个函数B,函数B中可以访问函数A中定义的变量或者是数据,此时形成了闭包。

闭包的模式:函数模式的闭包、对象模式的闭包

函数模式的闭包:

    function fun1 (){
        var num = 100;
        function fun2 (){
            console.log(num);
        }
        fun2();
    }
    fun1();
    function fun1 (){
        var num = 100;
        return function fun2 (){
            return num;
        }
    }
    console.log(fun1()());

对象模式的闭包:

    function fun1 (){
        var num = 100;
        var obj = {
            age:num
        }
        console.log(obj.age)
    }
    fun1();
    function fun1 (){
        var num = 100;
        return {
            age:num
        }
    }
    console.log(fun1().age);

闭包的作用:缓存数据、延长作用域链

    function bibao (){
        var num = 10;
        return function(){
            num++;
            return num;
        }
    }
    var ffBb = bibao();
    console.log(ffBb());
    console.log(ffBb());
    console.log(ffBb());

        输出的值分别为11,12,13 bibao()这个方法只执行了一次,也就是说num=10这个只执行了一次,但是ffBb()这个方法执行了三次。
总结:如果想要缓存数据,就把这个数据放在外层的函数和里层的函数的中间位置
闭包的优点和缺点:缓存数据
        局部变量时在函数中的,当函数执行完之后,局部变量就会被释放(这个操作是浏览器执行的),闭包后,里面的局部变量使用的作用域链就会被延长,不能及时的释放。

沙箱

在一个虚拟的环境中模拟真实世界,在虚拟环境中做操作,不会影响真实的世界。

啥玩意?

其实相当于开辟了一个局部环境,在这个环境里边的变量不会影响外边环境的同名变量。

想到了啥,恩,自调用函数

(function (){…})();

(function (){…}());

相关文章

  • JS高级-闭包、沙箱

    作用域,作用域链,预解析 变量:局部变量、全局变量 作用域:变量的使用范围 js中没有块级作用域,一对括号中定义的...

  • Web前端------JS高级闭包、沙箱介绍

    闭包介绍 闭包小案例(一) 闭包小案例(二) 闭包小案例(三)--------模拟点赞 效果展示: 沙箱 欢迎关注...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • 详解js闭包

    详解js闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • js闭包问题理解

    闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢? js的作用...

  • JS闭包

    JS闭包 闭包练习

  • 023 JS高级

    JS高级 一、函数高级 1、函数回调 2、闭包 二、循环绑定 三、面向对象JS 1、属性与方法 2、类字典结构使用...

  • 闭包,作用域链,垃圾回收,内存泄露

    1. 什么是闭包? 来看一些关于闭包的定义: 闭包是指有权访问另一个函数作用域中变量的函数 --《JS高级程序设计...

  • 了解闭包 作用域链 垃圾回收机制

    1. 什么是闭包? 来看一些关于闭包的定义: 闭包是指有权访问另一个函数作用域中变量的函数 --《JS高级程序设计...

网友评论

      本文标题:JS高级-闭包、沙箱

      本文链接:https://www.haomeiwen.com/subject/waivxqtx.html