美文网首页
关于私有作用域的预解释

关于私有作用域的预解释

作者: 阿九是只大胖喵 | 来源:发表于2017-02-26 13:14 被阅读0次

如何区分私有变量还是全局变量:

  1. 在全局作用域下,预解释的时候,声明的变量是全局变量。
  2. 在"私有作用域中声明的变量"和"函数的形参",都是私有的变量。
    在私有作用域中,我们代码执行的时候,遇到了一个变量,首先需要确定它是否为私有变量,如果是私有变量,那么和外边的没有任何关系;如果不是私有的,则往当前的作用域的上一层作用域进行查找,如果上级中也没有,则继续查找,一直查找到window为止。这就是作用域链
var num = 10;  // num 是全局变量
function(num1) {
  console.log(num1); // num1 是私有变量
  var num2 = 12; // num2 是私有变量
}

当函数执行的时候,其直接目的是让函数体中的代码执行,首先会形成一个新的私有的作用域,然后按照如下的步骤执行。

  1. 如果有形参,先给形参赋值。
  2. 进行私有作用域的预解释。
  3. 私有作用域中的代码从上到下执行。
    函数形成一个私有的作用域,保护了里面的私有变量不受外界的干扰,外面修改不了私有的变量,同样的,私有的也修改不了外界的变量。这种机制称之为"闭包"

现在分析如下代码:

    console.log(total); // undefined
    var total = 0;
    function fn(num1, num2) {
        console.log(total);   // undefined
        var total = num1 + num2;
        console.log(total);  // 300
    }
    fn(100, 200);
    console.log(total); // 0
分析图.png

相关文章

  • 关于私有作用域的预解释

    如何区分私有变量还是全局变量: 在全局作用域下,预解释的时候,声明的变量是全局变量。 在"私有作用域中声明的变量"...

  • js笔记之作用域

    1. 如何区分全局作用域和私有作用域? 在全局作用域下声明(预解释的时候)的变量是全局变量 在私有作用域中声明的变...

  • * 预解释

    * 预解释 * 什么是预解释 * 关于预解释: 带var和带function不同 * 函数执行四阶段 * 作用域链...

  • 浅谈js的作用域

    1、如何区分私有变量和全局变量 (1).在全局作用域下声明(预解释的时候)的变量是全局变量;(2).在私有作用域中...

  • 1.预解释和作用域链

    预解释 作用域链

  • 作用域链

    -如何区分私有变量和全局变量: 1.在全局作用域下声明(预解释的时候)的变量是全局变量2.在私有作用域中声明的变量...

  • 作用域链,原型链,面向对象的理解

    作用域链: 函数执行会形成一个私有的作用域,形成和当前私有作用域中声明的变量都是私有变量,当前私有作用域有自我保护...

  • 作用域链跟原型链

    作用域链: 函数执行会形成一个私有的作用域,形参和在当前私有作用域中声明的变量都是私有变量,当前的私有作用域有自我...

  • 2.作用域链

    1.作用域 2.预解释是毫无节操的一种机制

  • 预解释和作用域链

    什么是预解释:在当前作用域下,在JS代码执行之前,浏览器会对带var和带function的进行提前声明或定义; 带...

网友评论

      本文标题:关于私有作用域的预解释

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