javascript中的全局变量和局部变量

来源:互联网 发布:口粮软件下载 编辑:程序博客网 时间:2024/05/19 16:35

最近写了很多js相关的程序,发现很多没有真正去接触或很少接触代码在计算机上运行的机制的前端工程师经常犯的一个错误:过度的使用全局变量,特别是document这个全局,在大量使用js的页面中很容易造成卡顿的现象。

变量,简单的来说就是分为全局变量和局部变量。由于作用域的不同,js对这两种变量的处理方式也不同。在js中变量是以栈的形式来进行保存的。栈的规则是后进先出,对于document这个自带的全局变量,毫无疑问这个变量被压在栈底,而在函数中定义的局部变量则存在于栈顶。为什么要这样做呢?因为局部变量已使用完了就可以释放出其所占用的存储空间,而全局变量是存在于整个程序中的直到程序被销毁才将其释放,因此把局部变量放在栈顶是为了更好地出栈。

在一段程序中多次使用全局变量,就是说你要多次地去进行出栈入栈操作,这无疑是在浪费时间。

例如:

function a(){   var a = document.getElementById("a");   var b = document.getElementById("b");   var c = document.getElementById("c");    var d = document.getElementById("d");    .......    console.log(a,b,c,d);}
这段代码的执行效率肯定不高,那么解决的方法是什么?

其实只要在函数一开始定义一个值:var dom = document; 就可以解决了。我们将document这个变量的值赋给dom,之时只访问了一次栈底。dom作为一个局部变量存在于栈顶。然后我们在把a,b,c,d这是个变量用dom.getElementById()来赋值。这时就不需要多次访问为程序节约时间。

在遇到上面这种多次访问到全局变量的情况下不妨试试我这种方法。

ps:建议少用全局变量。以上是个人的愚见,要喷请轻喷