浏览器天生有一个全局的叫window
函数执行的时候会形成一个私有的。
Js在执行之前,浏览器会给他一个全局作用域叫window,在window下分两个模块,一个是内存,一个是执行,内存会找到所有的关键字var和function 对变量进行提前声明(这个功能叫变量提升)给每个变量分配一个内存地址。在执行模块遇到变量首先会在自己的作用域下通过内存地址去查找这个变量是否存在,如果有就直接操作,没有就向他的上一级作用域的内存模块查找,如果有就操作,没有就继续向上查找,直到window。这种查找机制叫作用域链。
变量命名冲突
如果普通变量和函数变量命名相同,最后保留函数变量。