在javascirpt程序中,使用一个变量之前应先声明。声明变量用var关键词
如下所示
var i;
var sum;
也可以通过一个var关键词声明多个变量
var i, sum;
而且还可以将变量的初始赋值和变量声明合在一起
var message = "hello";
var i = 0, j = 0, k = 0;
如果未在var声明语句中给变量指定的初始值,那么虽然声明了这个变量,但在给它存入一个值之前,他的初始值就是ubdefined
我们注意到在循环语句for / in中同样可以使用var语句,这样可以跟简洁的声明在循环语句中的循环变量。例如:
for(var i = 1; i < 10; i++) console.log(i);
for(var i = 0, j = 10; i < 10; i++,j--) console.log(i*j);
for(var p in o)console.log(p);
如果之前学过C或者Java的静态语言,你可能会注意到javascirpt的变量声明中没有指定的数据类型。javascirpt的变量可以是任意数据类型。先将数字赋值给一个变量吗,然后在将字符串赋值贵变量,这是完全合理的。
var i = 10;
i = "ten"
重复的声明和遗漏的声明
使用var语句重复声明变量是合法且无害的。如果重复声明待遇优初始化器,那么这就和一条简单的赋值语句没什么两样。
如果过你试图读取一个没有声明的变量的值,javascirpt会报错。在ECMAScript 5严格模式中,给一个没有什么的变量赋值也会报错。然从在历史上讲,在严格模式下,如果给一个未声明的变量赋值,javascirpt实际上会给全局对象创建一个同名属性。它工作起来像声明一个全局变量。这意味着您可以侥幸的不声明全局变量。但在这是一个不好的习惯并会造成很多bug,因此,你应当始终使用var来声明变量。