由于 ECMAScript 是弱类型的,所以解释程序会为 test 自动创建一个字符串值,无需明确的类型声明。
eg:var test = 'hi' 声明了变量 test,并把它的值初始化为 "hi"(字符串),这里无需明确test的字符串类型。
<pre>
var test1='hi',test2=11;//也是合理的
</pre>
与java不同的是:ECMAScript 中的变量并不一定要初始化
var test;进行了变量的申明,但还是未初始化(也可以说成未定义)
<pre>
var test3;alert(test3); //弹出undefind
</pre>
与 Java 不同的还有变量可以存放不同类型的值。这是弱类型变量的优势。例如,可以把变量初始化为字符串类型的值,之后把它设置为数字值,如下所示:
<pre>
var test1 = 'nnan';test1=11;alert(test1);//弹窗显示的是11,后面的值把前面的覆盖掉了
</pre>
但是不建议使用:应该在使用变量时,好的编码习惯是始终存放相同类型的值。
变量的申明不是必须的。
ECMAScript 另一个有趣的方面(也是与大多数程序设计语言的主要区别),是在使用变量之前不必声明。例如:
<pre>
var test4 = 'hello';test5 = test4 +' '+'world';alert(test5); //弹窗显示hello world
</pre>
变量test5 并没有用 var 运算符定义,这里只是插入了它,就像已经声明过它一样。
ECMAScript 的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。但是并不建议使用,最好的习惯是像使用其他程序设计语言一样,总是声明所有变量。
undefined和error
undefined是变量已经申明了但是未进行初始化(未赋值)
error是变量压根就没有申明。
所有申明了变量未赋值都会是undefined,但是所有的值未undefined不一定都是申明了但是未赋值的。
例如:
<pre>alert(typeof test1) //弹出undefined
</pre>
值为undefined但是并没有进行变量的申明。
网友评论