JavaScript 中定义全局变量主要分为显式声明或者隐式声明. 下面本篇文章就来给大家具体介绍一下, 希望对大家有所帮助.
方法 1: 显式声明
使用 var(关键字)+ 变量名 (标识符) 的方式在 function 外部声明, 即为全局变量, 否则在 function 声明的是局部变量.
示例:
- <script>
- var test = 5;// 全局变量
- function a(){
- var a = 3;// 局部变量
- alert(a);
- }
- function b(){
- alert(test);
- }
- //a();// 调用 a 方法, 那么方法里面的内容才会执行
- //b();// 同上
- </script>
方法 2: 隐式声明
没有使用 var, 直接给标识符 test 赋值, 这样会隐式的声明了全局变量 test. 即使该语句是在一个 function 内, 当该 function 被执行后 test 变成了全局变量.
- <script>
- test = 5;// 全局变量
- function a(){
- aa = 3;// 也是全局变量
- alert(test);
- }
- //a(); // 输出 5
- //alert(aa);// 这里也可以方法 a()方法里面的变量, 因为 aa 是全局变量
- </script>
方式 3:
使用 Windows 全局对象来声明, 全局对象的属性对应也是全局变量.
- <script>
- Windows.test = 50;
- alert(test);// 输出 50
- </script>
这种方式经常被用到一个匿名函数执行后将一些函数公开到全局. 如 JQuery1.5 中最末一句
代码如下:
Windows.jQuery = Windows.$ = jQuery;
全局变量的优点:
可以减少变量的个数, 减少由于实际参数和形式参数的数据传递带来的时间消耗.
全局变量的缺点:
1, 全局变量保存在静态存贮区, 程序开始运行时为其分配内存, 程序结束释放该内存. 与局部变量的动态分配, 动态释放相比, 生存期比较长, 因此过多的全局变量会占用较多的内存单元.
2, 全局变量破坏了函数的封装性能. 函数象一个黑匣子, 一般是通过函数参数和返回值进行输入输出, 函数内部实现相对独立. 但函数中如果使用了全局变量, 那么函数体内的语句就可以绕过函数参数和返回值进行存取, 这种情况破坏了函数的独立性, 使函数对全局变量产生依赖. 同时, 也降低了该函数的可移植性.
3, 全局变量使函数的代码可读性降低. 由于多个函数都可能使用全局变量, 函数执行时全局变量的值可能随时发生变化, 对于程序的查错和调试都非常不利.
因此, 如果不是万不得已, 最好不要使用全局变量.
来源: http://www.css88.com/qa/javascript/11160.html