数据类型在任何计算机语言中都比较重要,JavaScript语言也是面向对象的。
JavaScript数据类型可以分为数值类型、布尔类型、字符串类型、对象类型和数组类型等。
1.数值类型
数值类型包括整数和浮点数,整数可以是十进制、十六进制和八进制数,十进制数由一串数字序列组成,它的第一个数字不能为0。如果第一个数字为0,则表示它是一个八进制数。如果第一个数字为0x,则表示它是一个十六进制数。
浮点数必须包含一个数字、一个小数点或“e”(或“E”)。浮点数例子如下:3.1415、-3.1E12、0.1e12和2E-12。
2.布尔类型
布尔类型有两种值:true和false。
3.字符串类型
字符串是若干封装在双引号("")或单引号('')内的字符。字符串例子如下:
"fish" 'fish' "5467" "a line"
4.对象类型
用new生成一个新的对象,例如:
var currentDay=new Date()
5.数组类型
数组类型Array也是一个对象,可以通过var arr=new Array(3)语句创建,其中3是数组的长度,可以通过arr.length属性取得数组的长度。
数据类型字面量(literals)是在程序中使用的字符表示数据的方式。例如常见的数据类型字面量:
12 //12整数 1.2 //1.2浮点数 "hello world" //一个内容为hello world的字符串 true //表示"真"布尔类型值 false //表示"假"布尔类型值 {height:10,width:20} //表示一个对象 [1,2,3,4,5] //表示数组对象 null //表示不存在的对象
JavaScript提供了类型转换函数,这些转换包括转换成字符串、转换成数字和强制类型转换。
1.转换成字符串
可以将布尔类型和数值类型转换为字符串类型,布尔类型和数值类型它们都由toString()函数实现转换。实例代码如下:
var found=false; console.log(found.toString()); //输出false var num1=10; var num2=10.0; console.log(num1.toString()); //输出 "10" console.log(num2.toString()); //输出 "10" console.log(num2.toString(2)); //输出二进制形式"1010" console.log(num2.toString(8)); //输出八进制形式"12" console.log(num2.toString(16)); //输出十六进制形式"A"
提示 在面向对象分析和设计过程中,toString()应该叫作“方法”,而不是“函数”,方法要有主体,而函数没有主体。但是为了尊重JavaScript,本书还是把类似toString()的方法称为函数。
2.转换成数字
把非数字的原始值转换成数字的函数:parseInt()和parseFloat()。实例代码如下:
var num3=parseInt("12345red"); //返回 12345 var num4=parseInt("0xA"); //返回 10 var num5=parseInt("56.9"); //返回 56 var num6=parseInt("red"); //返回 NaN ① var num6=parseInt("10", 2); //返回二进制数2 ② var num7=parseInt("10", 8); //返回八进制数8 var num8=parseInt("10", 10); //返回十进制数10 var num9=parseInt("AF", 16); //返回十六进制数175 var num10=parseFloat("12345red"); //返回 12345 var num11=parseFloat("0xA"); //返回 NaN ③ var num12=parseFloat("11.2"); //返回 11.2 var num13=parseFloat("11.22.33"); //返回 11.22 ④ var num14=parseFloat("0102"); //返回 102 var num15=parseFloat("red"); //返回NaN ⑤
上述代码第①、③和⑤行返回NaN表示无法转换有效的数值。第②行代码的parseInt函数有两个参数,第二个参数是基数,基数表示数值的进制。
3.强制类型转换
还可以使用强制类型转换来处理转换值的类型。JavaScript提供了三种强制类型转换函数:
(1)Boolean(value)——把给定的值转换成布尔型。
(2)Number(value)——把给定的值转换成数值。
(3)String(value)——把给定的值转换成字符串。
使用Boolean函数的实例代码如下:
var b1=Boolean(""); //false - 空字符串 ① var b1=Boolean("hello"); //true - 非空字符串 ② var b1=Boolean(50); //true - 非零数字 ③ var b1=Boolean(null); //false - null ④ var b1=Boolean(0); //false - 零 ⑤ var b1=Boolean({name: 'tony'}); //true - 对象 ⑥
Boolean函数可以将任何类型转换为布尔类型,其中第①行的""值、第④行的null值和第⑤行的0值转换后为false,第②行的"hello"值、第③行的50值和第⑥行的对象值转换后为true。
使用Number函数的实例代码如下:
var n1=Number(false); //0 var n1=Number(true); //1 var n1=Number(undefined); //NaN ① var n1=Number(null); //0 ② var n1=Number("1.2"); //1.2 var n1=Number("12"); //12 var n1=Number("1.2.3"); //NaN ③ var n1=Number({name: 'tony'}); //NaN ④ var n1=Number(50); //50
Number函数可以将任何类型转换为数值类型,其中第①行的undefined值、第③行的"1.2.3"值和第④行的对象值转换后为NaN,第②行的null值转换后为0。
提示 null表示无值,而undefined表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象。
使用String函数的实例代码如下:
var s1=String(null); //"null" var s1=String({name: 'tony'}); //"[object Object]"
String函数可以将任何类型转换为字符串类型,其中对象情况比较复杂。