Javascript学习笔记之函数篇(六) : 作用域与命名空间
在之前的介绍中,我们已经知道 Javascript 没有块级作用,只有函数级作用域。Javascript 中也没有显示的命名空间,这就意味着一切都定义在全局作用域中。每一次引用一个变量时,Javascript 会往上遍历整个全局作用域直到找到该变量。由于在函数 test 内没用 var 来定义变量 foo,所以将覆盖函数外部的全局变量 foo。上面的代码在运行之前, var 表达式和函数 test 的声明都将提升至顶部,因此程序将正常运行并不会报错。由于 Javascript 没有块级作用域,这不仅将提升 var 表达式,同时也会使得 if 结构变得不够直观。当尝试在一个函数作用域内访问一个 foo 变量时,Javascript 将会按照下面的顺序查找:当前作用域内是否有 var foo 的定义。一个最常见的问题就是命名冲突,这是因为 Javascript 只有一个全局作用域所带来的。
下载地址
用户评论