JavaScript的变量是松散类型的,他不像JAva那样具有很严格的定义规范,所谓松散类型就是可以用来保存任何类型的数据,换句话说,每个变量仅仅是保存值的一个引用而已。定义变量时使用var操作符,后跟变量名,这个变量可以存储任何值,像这种未经定义的变量,会保存一个特殊的值-undefined,当我们定义了变量的值之后,初始化始也只是为这个变量赋了一个值而已;例如下面的:
<script>
var string="hello,world";
alert(string);
</script>
这段代码只是在初始化的时候为他赋了一个值而已,并不会根据类型而把他标注为字符串类型的;另外要注意的是,我们再声明变量的时候也可以不使用var 关键字,这样也不会出错,但是并不推荐,我们也可以在修改变量的同时修改值的类型,但是也不推荐;
<script>
string="hello,world";
string="123"
alert(string);
</script>
数据类型
在ECMAScript中有五种基本简单数据类型,(我们的java有八大基本数据类型。。)分别是:undefined,Null,Boolean,number,String。还有一种复杂数据类型-Object,object本质上是一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。乍一看,好像只有6中数据类型不足以表示所有数据;但是,由于ECMAScript数据具有动态性,因此的确没有再定义其他数据类型的必要了。
我们可以使用typeof操作符来检验返回值的类型。
<script>
var test1;
alert(typeof test1); //undefined 如果这个值未定义;
var test2=true;
alert(typeof test2); //boolean布尔值;
var test3="abc";
alert(typeof test3); //string 如果这个值是字符串;
var test4=123;
alert(typeof test4); //number 如果这个值是数值;
var test5=new Object();
alert(typeof test5); //object如果这个值是对象;
function test6(){};
alert(typeof test6); //function 函数类型,声明的时候不要带var
</script>
Undefined类型:
Undefined类型只有一个值,即特殊的undefined,在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined;这个跟java有所不同;
Null类型:
Null类型是第二个只有一个值的数据类型,这个特殊的值是null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因,如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,而表示其他值。这样一来,只要直接检查null值就可以知道对应的变量是否保存了一个对象的引用;
实际上undefined值是派生自null值的;即undefined==null --true;
Boolean类型:
Boolean类型是ECMAScript中使用的最多的一种类型,该类型只要两个字面值:true和false,虽然Boolean类型的自面值只要两个,但是JavaScript的所有类型的值都可以转换为Boolean值;使用Boolean();
var test1="Hello world!";
if(Boolean(test1)){
alert(test1);
};
这一章,我们了解了JS的基本数据类型,下一次再深入去理解一下数值型和Object这两个特殊的类型吧;