一、JavaScript中的数据类型
由于JavaScript语言是弱类型语言,因此,声明变量时无须特别指定变量类型,一般直接用var 变量名 = ...
故而js的数据类型分为如下:
1.字符串类型,值用引号引起来的,特殊的还有转义字符,如\n 换行
2.数值类型,包括整数、小数、负数,特殊的有两个特别的数字:正负无穷大(Infinity 和 -Infinity)
3.布尔类型,值有true 和 false.
4.undefined类型:一种特殊的数据类型,表示该变量没有被定义或者没有被初始化。该类型只有一个值,即undefined
另外,定义了函数,但未设定返回值,默认返回值也是undefined。
5.null类型:表示尚未存在的对象(区别于undefined,定义了 一个变量但未赋初始值),如果函数或方法要返回的是对象,
且找不到该对象时,返回值就是null。但是,alert(undefined==null);//true 原因是undefined是从null派生出来的。
6.NaN类型:表示非数值(即 Not a Number),它与任何变量都不相等,甚至是它自身,alert(NaN == NaN);//false
检测值是否为非数字的js函数是 isNaN(
num
)
;
- 如果num为非数字的值,返回true
- 否则,返回false
由于非数字NaN与任何值(包括NaN自身)比较(==或===无法使用)返回的结果都为false,因此有必要设立一个函数判断值是否为NaN。
通常NaN可以判断一些非法的数值运算产生的值,例如对负数的平方根,被0除后的值,或者检测参数是否为NaN,或者检测parseFloat和parseInt的返回值
示例:
document.write(isNaN(0));
document.write(isNaN(0/0));
document.write(isNaN("8"));
document.write(isNaN("hello"));
document.write(isNaN(false));
document.write(isNaN(parseInt("3")));
document.write(isNaN(parseInt("hello")));
document.write(isNaN(undefined)); -
结果:
false true false true false false true true
二、数据类型间的转换
1.使用toString()转换字符串 var myNum = 528; alert(myNum.toString()); alert(myNum.toString(8));//八进制 1020
2.parseInt() 转换成整型数 (只有字符串类型的数字才可使用,否则返回NaN),如 var myStr = "5.28"; alert(parseInt(myStr));//5
var mystr = "528mys"; alert(parseInt(mystr));//528 自动忽略非数字 反之,var myStr1 = "mys528"; alert(parseInt(myStr1));//输出NaN
另外:parseInt("0x210");//528
-----------------------------------------------------------------------------------------------
对于parseInt("01")到parseInt("07");都能得到正确的结果,但如果是parseInt("08") 或parseInt("09")则返回0;
首先看parseInt语法:parseInt(string, radix);
其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。
在默认不指定radix时,当以0x开关时,为十六进制;如果以0开关且第二位不为x,则让为是八进制,(因为八进制不能有8,9所以报错返回0)。
所以,在我们用时还是明确指定进位制,以防出错。
如我们平时都用十进制位,我们就 parseInt("08", 10);3.parseFloat() 转换为浮点数(前提是只能是十进制的字符串才能用此方法)
parseFloat("5.28.715");//5.28 parseFloat("0x210");//0 parseFloat("01020");//1020 而不是528
三、特殊的for循环
for(变量 in 对象){...} 用于循环取对象中的属性或值
var cnDays = ["星期一","星期二","星期三",...“星期日”];
for( index in cnDays){
document.writeln("现在显示的是:"+cnDays[index]+"<br/>");
}
四、数组定义:
var objArray = new Array(); <===> var objArray = [];//空数组对象
var objArray = new Array(8);<===> var objArray = [8];//长度为8的元素
var objArray = new Array('x','y','z');<===> var objArray=['x','y','z'];//带初始值的
另外,由于js中的变量没有类型,因此,数组元素也是无类型的
var ttArray = [new Date(),'xys',214];