因为经常写php与js代码,有时候使用全局变量的时候经常的混淆,这篇文章就来说说js中的全局变量与php中的全局变量的区别。

js全局变量与php全局变量的区别

php全局变量

php的全局变量一般都是在函数外面进行声明,如果在函数里面调用全局变量的话,一定要使用 global 进行声明。

示例:

# feiniaomy.com 飞鸟慕鱼博客
$x = 5;
function a() {
    global $x;
    $x = $x + 5;
}
a();
echo $x;

输出结果:

10

js全局变量

JS中的声明全局变量分为显式声明与隐式声明,可参考下面的示例

(1)、js全局变量显式声明

在js中使用var(关键字)并且在函数外部声明变量的方式,则为全局变量而在函数内声明的为局部变量。

示例:

// feiniaomy.com 飞鸟慕鱼博客
var tt = 5;  //全局变量
function a()
{
  var cc = 3; //局部变量
  tt = tt + 10;
}
a();
console.log(tt);  // 输出 15
console.log(cc);  // 提示没有变量

(2)、js全局变量隐式声明

如果不使用var关键字来声明变量,直接给一个变量赋值,那么这个变量无论是在函数内还是在函数外,都将做为全局变量来使用。

示例:

// feiniaomy.com 飞鸟慕鱼博客
tt = 5;  
function a()
{
  cc = 3; 
  tt = tt + 10;
}
a();
console.log(tt);  // 输出 15
console.log(cc);  // 输出 3

ps:js全局变量的缺点

1、全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。

2、全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。

3、全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。