python,js, java全局变量对比

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 ,是没有错的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值