每一个变量都有一个确定的类型表明它存储什么样的数据。js基本的数据类型有strings字符串、numbers数字、Booleans布尔类型。字符串是使用双引号或单引号包含的一串字符;数字包括整数或浮点数。布尔类型只有两个值:true或false。这三种类型的例子:
var stringData = "JavaScript has strings It sure does"; var numericData = 3.14; var booleanData = true;
js也支持两个其他的基本类型,undefined和null。详细内容看第3章。
动态类型
js和其他语言的主要不同是js是动态类型(或称弱类型).尽管js变量有数据类型但是它的类型是通过内容类型推断出来的。例如一个变量被赋值一个字符串那么它就是字符型变量。js动态类型的结果是在执行的过程中它的类型可以改变。例如一个变量被赋值字符串,后来又被赋值布尔类型,那么它就变成布尔类型,这就是问什么声明变量只使用一个var.
js是弱类型有利有弊。如下面的语句很容易引起错误:
document.write(4*3); document.write("<<br />>"); document.write("5" + 5); document.write("<<br />>"); document.write("5" - 3); document.write("<<br />>"); document.write(5 * "5");
输出是:
12 55 2 25
大多数情况字符串都会被转为数字参与计算,但是"5"+5并没有得到10,而是得到"55",因为这里 + 变成了字符串连接符。如果你试图这样写:"cat"-3,这将会得到NaN,因为cat不能转为数字,被转为NaN,它减3还是NaN。
第3章有详细的类型转换信息。js中转换类型有parseInt或parseFloat,判断类型的有typeof操作符:
var x = "5"; alert (typeof x);
会弹出string