数据类型
ECMAscript有五种简单数据类型:Undefined,Null,Boolean,String,Number,还有一种复杂数据类型Object,Object本质上是由一组无序的名值组成的.
1.Undefined
Undefined类型只有一个值,undefined.使用var声明变量但未对其初始化时,这个变量的值就是undefined.
2.Null
Null只有一个值,null.
如果定义的变量准备在将来保存变量,那么最好将该变量初始化为null值,这样只要直接检查null值就可以知道相应变量是否已经保存了一个对象的引用.例如:
if (car != null){
//执行某些操作
}
3.Boolean
Boolean类型有两个值true和false
要将一个值转换为Boolean类型,可以调用转型函数Boolean():
var word = "hello world";
var boolWord = Boolean(word);
各种类型转换为Boolean类型的转换规则
数据类型 转换为true的值 转换为false的值
String 任何非空字符串 ""(空字符串)
Number 任何非0数值 0和NaN
Object 任何对象 null
Undefined n/a undefined
4.Number
4.1浮点数值
由于保存浮点数值的内存空间的数值是整数数值的两倍,因此ECMAscript会不失时机的将浮点数值转换为整数值.
如果小数点后面没有任何数字,就按整数保存,如果浮点数值本身表示得就是一个整数,那么就按整数保存(如1.0).
浮点数值最高精度是17位小数,但在算数计算时精度却不如整数.例如
if(a+b==0.3){
//不能这样!!!alert("0.3");
};
关于浮点数值计算会产生舍入误差的问题,有一点需要明确:这是使用基于 IEEE754 数值的浮点计算的通病
4.2数值范围
[Number_MIN_VALUE,Number_MAX_VALUE]
在大多数浏览器中,这两个值是[5e-324, 1.7976931348623157e+308]
如果得到超出js的值,那么这个值会被转换为 -/= Infifity
如果某次计算的的返回正或者负的Infinity值,那么该值无法参与下一次计算.
4.3.NaN
即Not a Number
这个数值用来表示一个要返回数值的操作数未返回数值的情况,这样就不会抛出错误了.
任何涉及NaN的操作都会返回NaN(如NaN/10)
NaN与任何值都不相等,包括NaN
isNaN();
任何不能转换为数值的都返回true
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)
4.4.数值转换
有三个函数可以把非数值转换为数值
Number();//可以把任何类型转换为数值
//下面两个只能把字符串转换为数值
parseInt() ;
parseFloat();
Number()转换规则
Boolean: true -> 1 false -> 0
null: 0
undefined: NaN
如果是字符串:
如果只包含数字 将其转换为十进制数字 011 -> 11 1.1->1.1 01.1 -> 1.1空字符串 -> 0其他字符 -> NaN
如果是对象:
则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换 的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符 串值
5.String
字符串可以由双引号或者单引号表示
字符串一旦创建,它的值就不能改变.要改变某个变量保存的字符串,首先要销毁原来字符串,再用一个包含新值的字符串填充该变量:
var lang ="hello";
var hd = lang + "world";
转换为字符串
toString();
String();
var a =111;
a.toString();
多数情况下调用toStiring不用传递参数,但在调用数值的toString()方法时,可以传递一个参数:
var num = 10;
alert(num.toString());//10
alert(num.toString(2));//1010 2进制
在不知道转换的值是不是null或者undefined的情况下,还可以使用转型函数String();
如果值有toString()方法,则调用toString()如果值是null,则返回"null"如果值是undefined,则返回"undefined"var value = 10;alert(String(value));//"10"
要把某个值转换为字符串,可以使用加号操作符(3.5 节讨论)把它与一个字符 串("")加在一起。
6.Object
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建 的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定 义对象,如下所示:
var o = new Object();