1、变量的声明和赋值,是分开的两个步骤,上面的代码将它们合在了一起,实际的步骤是下面这样。
var a; a = 1;
2、如果只是声明变量而没有赋值,则该变量的值是undefined
。undefined
是一个JavaScript关键字,表示“无定义”。
var a; a // undefined
3、如果变量赋值的时候,忘了写var
命令,这条语句也是有效的。
var a = 1; // 基本等同 a = 1;
但是,不写var
的做法,不利于表达意图,而且容易不知不觉地创建全局变量,所以建议总是使用var
命令声明变量。
4、如果一个变量没有声明就直接使用,JavaScript会报错,告诉你变量未定义。
5、可以在同一条var
命令中声明多个变量。var a, b;
6、JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值。
var a = 1; a = 'hello';
上面代码中,变量a
起先被赋值为一个数值,后来又被重新赋值为一个字符串。第二次赋值的时候,因为变量a
已经存在,所以不需要使用var
命令。
7、如果使用var
重新声明一个已经存在的变量,是无效的。
var x = 1; var x; x // 1
上面代码中,变量x
声明了两次,第二次声明是无效的。
8、如果第二次声明的同时还赋值了,则会覆盖掉前面的值
var x = 1; var x = 2; // 等同于 var x = 1; var x; x = 2;
JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)
本文来自:http://javascript.ruanyifeng.com/