ECMCScript中有5种简单的数据类型(基本数据类型);它们分别为undefinde,null,Boolean,Number和String.还有一种复杂的数据类型Object.
检验数据类型
用typeof来检测给定变量的数据类型
undefined(值未定义)
boolean(值是布尔值)
string(值是字符串)
number(值是数据)
object(值是对象或null)
function(值是函数)
Undefined类型
Undefined类型只有一个值的数据类型,就是undefined.就是在声明变量时,还未对变量初始化。如
var msg;
alert(msg == undefinded);//ture
alert(typeof msg);//undefined
alert(typeof a);//undefined
注意:未初始化的变量也包含undefined的值,但与未声明变量的值不一样
var msg;
alert(msg);//undefined
alert(a);//未声明的变量,这时会报错a is not defined
Null类型
Null类型也只有一个值的数据类型,就是null,表示空指针对象,所以要注意typeof操作检测的返回的是object.如
var a=null;
alert(a);//null
alert(typeof a) //object;
Boolean类型
Boolean类型有两个字面值true和false.注意,true和false要区分大小写,如True和False不是布尔类型的值,只是标识符。声明布尔值如
var a = true;
var b = false;
虽然Boolean只有两个字面量的值,但却是js中用的最多的一种类型。因为每种类型的值都有与这两个boolean值等价的值,要将这个值转成对应的布尔值。会自动调用Boolean()这个转型函数。如下
转换规则如下表
数据类型 | true | false |
Boolean | true | false |
Undefined | undefined | |
Number | 非零数值 | 0和NaN |
String | 非空字符串 | 空字符串 |
Object | 任何对象 | null |
平常使用如
var msg = "Hello Javascript";
if(msg) {
alert("msg通过调用Boolean()类型转换方法的值为true")
}
Number类型
Number类型用来表示整数和浮点数值。
整数可以通过八、十、十六进制来表示。
其中:八进制:通过第一位必须是0,后面是八进制数字序列,即是(0-7);
十进制:
十六进制:前两位必须是0x,后面是十六进制的序列,即是(0-9)和(A-F)
var intNun = 20,//整数(十进制数) 20
octalNum = 070,//八进制数 56
hexNum = 0xff, //十六进制数 225
注意:如果八进制后面的数字序列超出范围,前导0会无效,把其看出十进制来处理如
var num = 079;//无效的八进制 变成79
浮点数数值必须包含一个小数点,且小数点后面至少有一位数字如
var floatnum1 = 20.3
floatnum2 = 0.1,
floatnum3 = .1;//能省略0,但是不推荐这样写
浮点数可以用科学计数法 如
var num = 5.2e6;//等于5200000
注意:1. 如果小数点后面没有任何值,将会自动转为整数,应为储存浮点数的值要比整数的内存空间大两倍。如
var num = 520.0//解析为520
2.小数运算时,精确都不如整数,且存在bug,应该时十进制转二进制造成的。所以不要轻易用小数运算,应该用整数运算如
var a = 0.1, b = 0.2, c;
c = a+b;
alert(c);//结果为0.30000000000000004
整数运算如
var a=0.1, b=0.2, c;
c = (a*10+b*10)/10;
alert(c)://0.3
NaN时一个特殊的数值,用于表示要返回数值的操作未返回数值的情况。让代码不抛出错误,继续运行下去。它有两个特点:(1)任何涉及NaN的操作,都会返回NaN,(2)NaN与任何值都不相等,即使时NaN本身。如alert(NaN ==NaN)//false。所以会通过isNaN()来判断是否是”不是数值“。这个方法是尝试将传入的值转为数值,能就返回false,否则为true.
alert(isNaN(NaN));//true
alert(isNaN("abcd11));//true
alert(isNaN("10"));//false
alert(isNaN(10));//false
alert(isNaN(true));//false
isNaN方法是先调用对象的valueOf()方法,看看能不能转成数值,如果不能,通过这个返回值再调用toString()方法。所以alert(isNaN(“10”));为false
String类型
String类型用于表示由0或者多个16位的Unicode字符组成的字符序列,即字符串。可以用“双引号”,或者‘单引号’包起来。如
var name = "JavaScript";
var a = 'I like javaScript';
字符字面量
String数据类型包含着一些特殊的字面量,叫转义字符.。它们可以出现在字符串的任意位置,也可被作为一个字符来解析。如
var text = "This is a JavaScript text. \n";
alert(text.length);//28
这个例子中text有28个字符,其中转义字符表示一个字符。下面是常用的转义字符表。
字面量 | 含义 |
\n | 换行符 |
\t | 制表符 |
\b | 退格符 |
\r | 回车 |
\\ | 斜杠 |
\' | 单引号 |
\" | 双引号 |
var lang = "java";
lang = lang+"script";
alert(lang);//javascript
将变量转为字符串有两种方法,一种是直接和字串想加,包括空字符串即是" "(双引号)或者’ '(单引号)如
var a = 10+" ";//字符串10
b = 20+"javascript";
alert(typeof a);//string
alert(b);//20javascript
另一种是用toString()方法,如
var a = 10,
b = true,
c = null,
d = undefined;
alert(a.toString());//字符串10
alert(typeof a.toString());//string
alert(b.toString());//字符串true
alert(typeof b.toString());//string
alert(c.toString());//报错
alert(d.toString());//报错
注意,null与undefined没有toString方法,可以用转型函数String()将它们转为字符串。如
var a = 10,
b = true,
c = null,
d = undefined;
alert(String(a));"10"
alert(String(b));"true"
alert(String(c));"null'
alert(String(d));'undefined'