数据类型,类型转换
ECMAScript中有:
5种简单数据类型:Undefined、Null、Boolean、Number和String
1种复杂数据类型:Object
typeof操作符
结果为6种字符串:undefined、boolean、string、number、object、function 前面5个是数
据类型
例如:
typeof({}) 返回的是object
typeof(null) 返回的是object
typeof(function(){})返回的是object
var box;
alert(typeof box); //box是Undefined类型,值是undefined,类型返回的字符串是undefined
var box=true;
alert(typeof box); //box是Boolean类型,值是true,类型返回的字符串是boolean
var box='abc';
alert(typeof box); //box是String类型,值是'abc',类型返回的字符串是string
var box=250;
alert(typeof box); //box是Number类型,值是250,类型返回的字符串是number
//空的对象,表示这个对象创建了,里面没东西
//空对象,表示没有创建,就是一个null
var box={}; 或者 var box=new Object();
alert(typeof box); //box是Object类型,值是[object Object],类型返回的字符串是object
var box=null;
alert(typeof box); //box是Null类型,值是null,类型返回的字符串是object
function box(){
}
alert(typeof box); //box是Function函数,值是function box(){},类型返回的字符串是
function
alert(undefined==null); //他们都是空的,所以相等理所当然
-------------------------------------------------------------------------------
类型转换
显式类型转换
var box='';var box=0;var box=NaN;var box=null;var box=undefined; var box;
alert(Boolean(box)); //false
隐式类型转换
八进制:以8为基数,前导必须是0,八进制序列(0~7)
var box=070;//八进制
alert(box); //按照十进制输出56
var box=079;//无效的八进制,自动解析为79
十六进制
var box=0xA;
var box=0x1f;
alert(box);
浮点型:
var box=3.80;
alert(box); //3.8
var box=8.0 //自动转换成整型,由于保存浮点数值需要的内存空间比整型数值大两倍
alert(box);
科学计数法:
var box=4.13e3 var box=4.13*1000 两者相等
最小值:
alert(Number.MIN_VALUE); //5e-324 最小值
alert(Number.MAX_VALUE); //1.7976931348623157e+308 最大值
如果超过了浮点数值范围的最大值或最小值,那么就会出现Infinity(正无穷)或者-
Infinity(负无穷)。
例如:
var box=100e1000; //超出范围,Infinity(正无穷)
var box=-100e1000; //超出范围,-Infinity(负无穷)
也可以通过Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY得到Infinity(正无穷)
或者-Infinity(负无穷)的值。
alert(Number.POSITIVE_INFINITY); //Infinity(正无穷)
alert(Number.NEGATIVE_INFINITY); //-Infinity(负无穷)
var box=100e10;
alert(isFinite(box)); //true 没有超过最大值
var box=0/0; //数学中第一个可以为0,第二个不可以为0
alert(box); //NaN
var box=12/0; //Infinity
var box=12/0*0 //NaN
alert(Number.NaN) //NaN
var box=NaN+1; //NaN
alert(NaN==NaN); //false
var box=0/12;
alert(isNaN(box)); //false
alert(isNaN(NaN));// true
alert(isNaN(25));//false,25是一个数值
alert(isNaN('25'));//false,'25'是一个字符串数值,可以转成数值
alert(isNaN('Lee'));//true,'Lee'不能转换为数值
alert(isNaN(true));//false true可以转换成1
alert(isNaN(false));//false false可以转换成0
//如果对象的toString方法能够返回数值,那么就不是NaN了。
var box={
toString:function(){
return 'Lee'
}
}
var box={}
alert(isNaN(box)); 以上两种写法都是true
var box={
toString:function(){
return '123'
}
}
alert(isNaN(box)); 这种写法返回false
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。Number()函数是
转型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转成数值。
alert(Number(true)); //Boolean类型的true和false分别转换成1和0
alert(Number(25));// 25,数值型直接返回
alert(Number(null)); //0,空对象返回0
alert(Number(undefined));//NaN
alert(Number('0456')); //456
alert(Number('070')); //70
alert(Number('08.90')); //8.9
alert(Number('')); //0
alert(Number('123Lee123')); //NaN
var box={
toString:function(){
return 123
}
};
alert(box)
由于Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数的时候更常用
parseInt()
alert(parseInt(null)); //NaN
alert(parseInt(undefined)); //NaN
alert(parseInt(true)); //NaN
alert(parseInt('456Lee')); //456
alert(parseInt('Lee456Lee')); //NaN
alert(parseInt('12Lee456Lee')); //12
alert(parseInt('56.12')); //56
alert(parseInt('')); //NaN
也可以转换八进制和16进制
ECMAScript为parseInt()提供了第二个参数,用于解决各种进制的转换。
alert(parseInt('0xAF')); //175,十六进制
alert(parseInt('AF',16)); //175,第二参数指定十六进制,可以去掉0x前导
alert(parseInt('AF'));//NaN
alert(parseInt('101010101',2));//314,二进制转换
alert(parseInt('70',8)); //56,八进制转换
alert(parseFloat('0xA')); //0 不认识十六进制
alert(parseFloat('123.4.5')) //123.4 只认一个小数点
alert(parseFloat('0123.400')) //123.4,去掉前后导
alert(parseFloat('1.234e7')); //12340000,把科学计数法转成普通数值
换行符:\n
制表符:\t
空格:\b
回车:\r
斜杠:\\
单引号:\'
双引号:\"
toString()方法
var box=true;
alert(box.toString()); //'true'
var box=10;
alert(box.toString(2));//'1010'
toString()是不能够转换null 和undefined类型的,如果在转型之前不知道变量是null或者
undefined的情况下,我们还可以使用转型函数String(),这个函数能够将任何类型的值转换为
字符串。
var box=null;
alert(String(box)); //'null'
var box;
alert(String(box)); //'undefined'
String()方法很智能。如果值有toString()方法,就使用toString()方法,如果是null或者
undefined就返回null或者undefined
创建对象的三种方法:
var box=null;
var box={};
var box=new Object();
var box=new Object(2);
alert(box); //2 自动执行toString()方法
看一个例子:
var box=new Object(2);
var age=100;
alert(box+age); //typeof box是object typeof box是number 竟然可以运算,这就是
javascript,底层自动转换

浙公网安备 33010602011771号