1, Undefined类型
:只有一个值即特殊的undefined
(1) 只声明变量而未初始化会输出undefined
(2)未声明变量时会产生错误;但对该变量进行typeof操作时会输出undefined
2, Null类型
:只有一个值null。
(1) 从逻辑角度看null表示一个空对象指针,则用typeof操作符对其进行操作时输出的会是object
alert(typeof (null));//输出结果是object(对象)
(2)如果声明的变量准备在后面用于保存对象,那最好将该变量先初始化为null而不是其他值;这样的话只要直接检测null值就可以知道是否已经对该变量保存了一个对象的引用
var a = null;
a = 1;
if(a != null) {
alert(a已经被赋值);
}
3, Boolean(布尔值)类型
:只有true和false两种值
Boolean()方法用法:
var message = "i am a girl";//字符串的数据类型
var messageBoolean = Boolean(message);
4, Number类型
:用于表示整数和浮点数值
(1)整数:
八进制:第一位必须是0且每一位必须是八进制序列0-7;如果超出范围前导0将被忽略,后面值被当作十进制来解析
var num1 = 070;//输出结果为八进制的56
var num2 = 079;//无效;输出结果为79
var num3 = 08;//无效;输出结果为8
十六进制:前两位必须是0x后面跟0-9及A-F(大小写无所谓)
var num4 = 0xA;//输出结果为十六进制的10
var num5 = 0x1F;//输出结果为十六进制的31
进行算数计算时所有的进制都将会被转换成十进制数值
(2) 浮点数值:数值中必须包含一个小数点
var num1 = 1.;//解析为1
var num2 = 10.0;//解析为10
var num3 = 3.01e7;//等于3.01*10的七次方
(3) 数值范围:
最大数值保存在Number.MIN_VALUE中
最小数值保存在Number。MAX_VALUE中
如果超出了范围数值会自动的成特殊的-Infinity(负无穷)或者Infinity(正无穷)
isFinite()函数:其参数如果在范围之内就会返回true
var num = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(num));//结果为false
(4): 非数值(即Not a Number)
- <1> 两个特点 :
任何涉及NaN的操作都会返回NaN
NaN与任何值都不相等
- <2>isNaN()方法:
接收到一个值后会先尝试将这个值转换成数值,可以转换的话,会返回false,如果不能转换就会返true
数值转换的三个函数:
-
<3>数值转换的几个函数
●number()方法:
适用于任何数据类型。转换规则为:
Boolean值:
var a = "";//空字符串
var b = "abc";//字符串
console.log(Boolean(a));//输出为false
console.log(Boolean(b));//输出为true
console.log(Number(Boolean(a)));//输出为0
console.log(Number(Boolean(b)));/输出为1
null值:
console.log(Number(null));//输出为0
undfeined值:
console.log(Number(undefined));//输出为NaN
string值:
var a = Number("");//空字符串,输出为0
a = Number("011");//前导0会被忽略,输出11
a = Number("01.1");//输出1.1
object:
如果是对象,则调用对象的valueOf方法,再按照前面的规则转换返回得值。如果转换的结果是NaN,再调用对象的toString()方法,再按照前面的规则转换返回的字符串值
●parseInt()方法:
专门用于把字符串转换成数值
var num = parseInt("520love");//输出1234
var num1 = parseInt("");//输出NaN
var num2 = parseInt("070");//输出56(前导为0,则为八进制)
var num3 = parseInt("ox2a");//输出42(前导为ox,则为十六进制)
var num4 = parseInt("20");//输出20(十进制)
var num5 = parseInt("5.21");//输出5(小数点为非数字字符,解析)
因为ECMAscript3和5在使用该函数在处理像八进制字面量时会存在分歧,所以一般建议该函数使用两个参数。例如:
var num1 = parseInt("0xa2",16);//输出十六进制的162(可以省略前导0x)
var num2 = parseInt("01",2);//输出二进制的1
●parseFloat()方法:
专门用于把字符串转换成数值
始终会忽略前导0,只解析十进制。例如:
var num1 = parseFloat("789abc");//输出789
var num2 = parseFloat("0xA");//输出0
var num3 = parseFloat("33.14");//33.14
var num4 = parseFloat("33.12.4");//33.12
var num5 = parseFloat("098.6");//98.6
var num6 = parseFloat("2e2");//200
5,String类型:
例如:
var num1 = "iamagirl";//用双引号
var num2 = 'hinihao';//用单引号
toString()方法:其参数可以传递基数
var num = 20;
alert( num.toString(8));//输出"24"
alert(num.toString());//默认是十进制,输出20
alert(num.toString(2));//1010
当不知道要转换的值是null或undefined值的情况下,可以使用适合任何数据类型的String()函数
var num1 = null;
var num2 ;
alert(num1.toString());//程序会报错,因为该值没有toString()的方法
alert(num2.toString());//程序会报错,因为该值没有toString()的方法
alert(String(num1));//输出"null"
alert(String(num2));//输出"undefined"
6, Object类型
:就是一组数据和功能的集合。
可以通过执行new操作符以及要创建的对象名称来创建对象。
创建Object类型的实例并为其添加属性和方法,就可创建自定义对象。
例如:
var o = new Object();