1.javascript全局变量
javascript 除了在函数里面用 var 声明的变量是局部变量,其他的都是全局变量。
也就是说 函数外面 用不用 var 都是全局的,函数里面不用 var 也是全局的。
此外,补充一个javascript 局部 变量作用域的例子:
function ff() {
for ( var i=0;i<3;i++ ) {
var a = 3;
//对a的一些操作
}
alert(a); //此处 a 是可见的
}
javascript 变量作用域不是严格 按照花括号对 限定的,函数中声明的 局部变量,作用域是 从该变量声明 直到函数体结束,不论该变量被嵌套在多深的花括号对当中。
而java则是严格按照花括号对限定局部变量作用域。
使用全局变量:无需声明,直接使用该变量,读写都可以
2. Java全局变量
java强类型语言,必须有类型声明,只要不放在函数中,类中,也就是在源文件中不受任何花括号包裹的即为全局变量。
局部变量则严格按花括号限定范围。
使用全局变量:需在声明全局量后,直接使用该变量,读写都可以
3. Python全局变量
不在函数中,不在类中,也就是在源文件第一级缩进位置的即为全局变量。(python以缩进替代花括号)
使用全局变量:全局量需要先声明,Python使用全局变量比较特殊,如果仅仅是读操作全局量,不需要使用 global声明使用全局量,默认会查找局部量,全局量,直到找到
一个同名变量,也就是说不使用global ,全局量也是可见的。(除非与局部量命名冲突,则局部量覆盖全局量)。
如果要对全局量进行写操作,必须在写操作之前使用global声明,你操作的对象是全局量。如果不使用global,写操作不会报错,但是不会更新到全局量中。
举个例子:
某个.py文件中:
CONST = 0 #全大写,从命名规范上区别全局量
def f1 ():
print CONST
def f2 ():
CONST = 1
def f3():
global CONST
CONST = 2
>>> f1() #输出0,直接读操作全局量
>>> f2() #尝试修改,但是未使用global,相当于在f2()函数内部新建了一个局部变量,与全局变量重名也叫CONST,然后赋值给了该局部变量
>>> f1() #输出0, f2() 修改不生效(不可见)
>>> f3() #使用了global,对全局变量赋值2
>>> f1() #输出2, f3()修改生效(可见)
所以为了避免出现低级错误,使用全局变量前,总是显示使用 global ,是没有错的。