关键字var 用于定义变量,如果使用var定义变量,那么该变量一定是局部变量,也就是只能在定义变量的函数内使用,如果不使用var,那么msg变量就将是全局变量,你可以在任意地方访问该变量,在局部上下文使用全局变量不一定是坏事,在某些情况下也的确需要这样用,然而这并不是一种好的实践。之所以要避免使用全局变量,是因为如果应用程序中有多个javascript脚本,那么就可能在某个文件中的某段代码里使用到msg变量,这样就会覆盖原有的数值,或者,如果已经有了全局变量msg,而某些javascript脚本程序库错误地定义变量 就会导致其数据丢失,变量的作用域是非常重要的,特别是当全局变量与局部变量的名字相同的时候
变量作用域的规则如下:
如果在函数或代码块中使用var关键字定义一个变量,那么这是一个属于这个函数或代码块的局部变量如果使用一个没有var关键字定义的变量,并且存在同名的全局变量,那么该局部变量将等同于已经存在的全局变量
如果使用var关键字定义一个变量,但是没有对变量节能型初始化(例如为变量赋值)那么它是个局部变量,但是它是未定义的
如果定义变量时没有使用var关键字,或者显式定义为全局变量,但是没有进行初始化,那么这是一个可以全局访问的变量,但是也是未定义的;