所谓作用域,也就是变量和函数起作用的区域,不同的语言有着不同的实现。而在JavaScript中,这也是往往让人迷糊的地方,也是JavaScript中必须理解的特性之一。
首先来看看下面的代码:
1 | for (var i = 0; i < 10; i++) { |
从运行结果不难看出,变量i
在循环体结束之后仍然可以访问。而诸如Java、C#等语言中,循环结束之后便不能再访问到循环体中的变量了。继续看下面代码:
1 | var name = 'heroic'; |
结合两段代码可以知道,在JavaScript中是不存在块级作用域的,只存在函数作用域(也称“本地作用域”)和全局作用域。而作用域中的变量我们分别称其为:局部变量和全局变量。
前辈们(前端的长辈们,嚯嚯)常常反复在说,全局变量是魔鬼啊,魔鬼啊。。。(回声)那到底是嘛原因呢?咱接着往下说。