var a=10; //正确
a=10; //正确
在javascript中,以上两种方法都是定义变量的正确方法。微软的Script56.CHM中是这样解释的:
尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。
从上面的描述看来,对待这两种定义方法要区分以下两种情况:
1.在一个过程级中(即位于function的定义范围内,无论是函数,还是类)的任何地方,包括在一个区块里(for,while,if……),定义变量时,使用var定义,则此变量只在这个过程级内起作用,反之为全局变量。
2.在过程级外定义变量时,无论是否忽略var,都将定义一个全局变量。
从这点看来,JS和其他语言有不一样的地方,变量的范围不以“{}”作为边界,而是以"function(){}"为边界,而且在过程内可以很轻松的定义全局变量。如果不注意这个问题的话,是很容易产生不可预知的错误的。
对于使用var,我的建议是要养成好的使用习惯:
1.在程序的开头,统一定义全局变量;
2.所有的变量在定义时都要加上var;
3.尽量不要在不同的过程中使用相同的变量名
a=10; //正确
在javascript中,以上两种方法都是定义变量的正确方法。微软的Script56.CHM中是这样解释的:
尽管并不安全,但声明语句中忽略 var 关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。
从上面的描述看来,对待这两种定义方法要区分以下两种情况:
1.在一个过程级中(即位于function的定义范围内,无论是函数,还是类)的任何地方,包括在一个区块里(for,while,if……),定义变量时,使用var定义,则此变量只在这个过程级内起作用,反之为全局变量。
2.在过程级外定义变量时,无论是否忽略var,都将定义一个全局变量。
从这点看来,JS和其他语言有不一样的地方,变量的范围不以“{}”作为边界,而是以"function(){}"为边界,而且在过程内可以很轻松的定义全局变量。如果不注意这个问题的话,是很容易产生不可预知的错误的。
对于使用var,我的建议是要养成好的使用习惯:
1.在程序的开头,统一定义全局变量;
2.所有的变量在定义时都要加上var;
3.尽量不要在不同的过程中使用相同的变量名