本文代码测试环境: win7 32位,chrome 版本如下:
一,JS基本数据类型:Undefined, Null, Boolean, Number, String, Object六种。
1,Undefined:: 该类型只有一个值:undefined.
1) 一个变量声明但未初始化,值就是 undefined,注意大小写。
e.g:
var msg;
alert(msg); //undefined
2) 一个变量未声明,直接使用会报错,
e.g::
alert(newMsg); //Uncaught ReferenceError: newMsg is not defined
注意:它们调用 typeof 都返回 undefined.
2,Null:该类型只有一个值:null,它是一个空对象指针。
1) typeof(null) 会返回 "object"
2) undefined是从null继承,所以 alert(null == undefined) 返回true.
3,Boolean:只有两个值:true, false 注意全是小写。
内置函数:Boolean() :将指定值转换成布尔值。转换规则以示例给出:
1)Boolean(null); // false
2) Boolean(""); // false Boolean("hello,world"); //true
3) Boolean(undefined); // false
4) Boolean(0); // false Boolean(1);//true Boolean(071); //8进制,true
4,Number: 数值型,包括整型和浮点型。
内置函数:Number(), parseInt(), parseFloat(). isFinite(); isNaN();
其中 parseInt()用于将字符串转换为整型,并可以指定进制。parseFloat()仅针对十进制进行转换。
例子:
1)parseInt(011); // 9,自动识别为8进制,并转换为10进制。
parseInt(11, 8); // 9 ,指定11为8进制数,然后转换为10进制。
parseInt("af", 16); 或 parseInt("0xaf"); // 175 ,都是16进制。
parseInt("af"); // NaN,注意,NaN也是Number类型,typeof 返回 number。
alert(NaN == NaN); //false,NaN和任何值都不相等。
alert(10/0);// Infinity。无穷大。
alert(Number.MAX_VALUE); //最大值, 1.797E308
alert(Number.NEGATIVE_INFINITY);// -infinity 负无穷大。
ifFinite(10/0); // false,说明不是有穷的。
var a=0.1, b =0.2; alert(a+b); //0.300000000000004
alert(a+b == 0.3); // false,浮点计算的误差,基于IEEE754的浮点计算都有此问题。
5,String 类型:
内置函数:toString();
e.g:
1) alert("abc" == "abc"); // true
2) alert("hello".length);
3)var msg; alert(msg.toString()); //报错,不能在undefined上调用toString()
4) var obj=null; alert(obj); //null
5) var num=10; alert(num.toString(2)); //1010,转换成二进制输出。
6,Object类型:
内置函数和属性:
constructor(); hasOwnProperty(pName); isPrototypeOf(pVal); propertyIsEnumerable(pName); toString(); valueOf();