私有作用域的初级理解

1.全局变量:全局作用域下声明(预解释)的变量是全局变量
2.私有变量:私有作用域下,函数的形参和声明的变量
3.作用域链:在私有作用域下,执行代码的时候遇到变量,是私有变量则取私有变量,否则往上一级作用域查找直到找到
4.函数每次执行的时候,会形成一个新的私有作用域,然后按照如下步骤进行:
  a.如果有形参先给形参赋值
  b.进行当前私有作用域的预解释
  c.当前作用域的代码从上到下执行
5.闭包:函数执行形成新的私有作用域,里面的私有变量只在里面有效,与外面的毫无关系

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p>
        模拟浏览器:
            1.进去全局作用域,开始预解释,
            var varible,
            fn="function fn(varible){
                console.log(varible);
              var varible = "私有";
              console.log(varible);
                }"
         预解释完毕
         2.开始执行
         全局作用域:
             varible="全局"
             打印varible("全局")
         函数执行创建新的私有作用域:
             形参:varible="参数";
             预解释: varible已经声明了不再声明,预解释完毕
             开始执行: 打印varible("参数"),varible="私有" 重新赋值,打印varible("私有") 执行完毕

    </p>
    <script>
        var varible = "全局";
        function fn(varible){
            console.log(varible);
          var varible = "私有";
          console.log(varible);
        }
        console.log(varible);
        fn("参数")

    </script>
</body>
</html>

点击查看详情

看到一个较好的demo: http://www.qdfuns.com/notes/21146/32eab983640afc7ef16b266440db1f5c.html

原文地址:https://www.cnblogs.com/2han/p/6268532.html