1.作用域:作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。通常来说一段程序代码中使用的变量和函数并不总是可用的,限定其可用性的范围即作用域,作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。
2.作用域链:作用域链决定了哪些数据能被函数访问。当一个函数创建后,它的作用域链会被创建此函数的作用域中可访问的数据对象填充。
在JavaScript中,数据存储位置可以对代码整体性能产生重要的影响。有四种数据访问类型:直接量, 变量, 数组项,对象成员;
直接量和局部变量访问速度最快,数组项和对象成员之类的对象访问需要更长的时间,他们通过地址引用来查找;
局部变量位于作用于的最顶端,访问快,全局变量位于作用域的末端,访问需一级一级查找,速度最慢,优化办法是使用次数多的,采用局部变量存储,减少全局变量访问次数;