私有作用域的初级理解
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