美文网首页
《javascript基础补充--作用域与作用域链相关知识点》

《javascript基础补充--作用域与作用域链相关知识点》

作者: code追命 | 来源:发表于2017-11-13 16:21 被阅读0次

    关键词:全局变量、局部变量、变量提升机制、内存回收机制、作用域、作用域链

    变量(作用域)

    局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用

    全局变量 局部变量
    作用域 整个程序 当前函数或循环等
    生命周期 浏览器卸载页面才会结束 函数的执行过程中存在

    闭包

    • 概念:定义在一个函数内部的函数,读取内部变量。
    • 用途:
      1. 是前面提到的可以读取函数内部的变量,
      2. 让这些变量的值始终保持在内存中。(合理利用,减少浏览器开销)

    变量提升机制

    1. 当使用var定义变量,定义名称会提升到作用域顶部
    console.log(varTest);//undefined
    var varTest = 123;
    console.log(letTest);//letTest is not defined
    let letTest = 456;
    

    内存回收机制

    垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。

    思考题

    1. b没有使用var,所以是定义一个全局的变量,注意严格模式b会报not defined
    function fn() {
        var a = b = 123;
        console.log(a);
        console.log(b);
    }
    fn();
    console.log('outside: ' + a);//=>a is not defined
    console.log('outside: ' + b);//=>outside: 123
    
    1. 作用域,内部没有定义,变量会往上寻找
    var num = 123;
    function fn() {
        console.log(num)//=>123
    }
    
    1. 作用域,就近原则
    function fn() {
        console.log(num)//=>undefined
        var num = 456; 
    }
    

    参考资料

    这个系列文章是我收纳、归纳、回顾前端基础知识。供自我与有需要的人,共同进步。感谢前人的分享,如有错处,请多提点

    相关文章

      网友评论

          本文标题:《javascript基础补充--作用域与作用域链相关知识点》

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