《JavaScript高级程序设计》
1)ECMAScript不支持自定义类型,只有6中数据类型:
5种基本数据类型(简单数据类型)
Undefined 未定义 "undefined"
var a ;
var a = "undefined";//不做
Null 空引用数据类型 "null"
var a = null;
Boolean 布尔类型 true/false
var a = false;
Number 数字类型
var a = 10;
String 字符串类型 "" ''
var a ="hello";
var a ='hello';
1种引用数据类型(复杂数据类型)
Object(本质由一组无序的键值对组成)
var person= new Object();
person.name = "terry";
person.age = 12;
2) typeof 操作符
返回该变量名所指向数据的类型
语法:
typeof 变量名
可有取值如下
"undefined" 未定义
"boolean" 布尔类型
"string" 字符串
"number" 数值
"object" 对象或者null
"function" 函数
3) 基本数据类型
1. Undefiend
该类型只有一个值undefined。对未声明和未初始化的变量执行typeof操作符都返回undefined
var a;
console.log(a); // undefined
console.log(typeof a); // undefined
console.log(b); //ReferenceError: b is not defined
console.log(typeof b); // undefined
2. Null类型
该类型只有一个值 null ,null可以表示一个空对象的指针。
var car = null;
console.log(typeof car ) //object null被认为是空对象的引用
【使用情景】
如果一个变量准备将来保存对象,可以将该变量初始化null而不是其他,这样可以通过检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
if(car !=null ){
//car对象执行某些操作
}
实际上 undefined 派生自null值。undefined == null 结果为 true
null与undefined用途不同,null可以用来表示一个空对象,但是没有必要把一个变量的值显式设置为undefined
3. Boolean类型
该类型只有两个值,true,false虽然boolean类型的取值只有两个,但是ECMAScript中所有的类型的值都有与这两个Boolean值等价的值
4. Number
该类型用来表示整数和浮点数
1) 表示方法:
1. 整数:
十进制数: 55 0~9
八进制数: 首位为0,其他位为(0~7 如果字面值超出了范围,前导0将会被忽略)
070 (表示 7*8一次方 = 56)
079 (超过了范围,表示79)
十六进制: 前两位为0x,其他位为(0~9,A~F)
2. 浮点数
所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后必须至少有一位数字。浮点数值的最高精度是17位小数。
例如: var f = 1.2;
科学计数法:e
var e = 3.125e7; //31250000
2) 数值范围
由于内存的限制,ECMAScript不能保存世界上所有的数值。ECMAScript能表示的最小数值保存在Number.MIN_VALUE中,能表示的最大的数值保存在Number.MAX_VALUE中。如果某次计算的结果超过了JavaScript数值范围,将会返回Infinity(正无极)或者-Infinity(负无极)使用 isFinite()函数可以判断参数是否在最大值和最小值之间,如果在,返回true
在绝大数浏览器中:
Number.MIN_VALUE : 5e-324
Number.MAX_VALUE : 1.7976931348623157e+308
如果某次计算返回了正的或者负的Infinity,那么该值无法继续参与下一次计算。可以使用isFinite(para)函数判断para 是否在最大数最小数之间
3) 非数值 NaN (not a number)
该数值表示一个本来要返回数值的操作数未返回数据的情况。
var a = 10/'a';
console.log(a); //NaN
任何涉及到NaN的操作都会返回NaN; NaN与任何值都不相等,包括NaN本身。
isNaN,判断参数是否“不是数值”,当参数para不是数值的时候返回true
isNaN(NaN); true
isNaN("blue"); true 无法转换为数值
isNaN(10); false 10
isNaN("10"); false 10
isNaN(true); false
注意:
1) 默认情况下,ECMAScript会将小数点后带有6个零以上的浮点数转化为科学计数法。
0.0000003 => 3e-7
2) 在进行算术计算时,所有以八进制十六进制表示的数值都会被转换成十进制数值。
3) 保存浮点数需要的内存是整数的两倍,因此ECMAScript会不失时机将浮点转换为整数
例如:
var a = 1.;
var b = 1.0; 都将解析为1
4) 避免测试某个特点的浮点数值,是使用IEEE754数值的浮点计算的通病
例如: 0.1+0.2结果不是0.3,而是0.30000000000000004
5. String
该类型表示由零个或者多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号或者单引号表示
1)字符字面量
\n 换行
\t 制表
\b 退格
\r 回车
\\ 斜杠
\' 单引号
\" 双引号
2)字符长度
通过length属性获取字符长度
6. Object
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行"new 对象类型"来创建。
var o = new Object();
Object类型是所有它的实例的基础,换句话说,Object类型所具有的任何属性和方法,同样存在于更具体的对象。
constructor: 保存用户创建当前对象的函数
hasOwnProperty(propertyName); 用于检查给定的属性是否在当前对象实例中
isPrototypeOf(object); 用于检查传入的对象是否是原型
propertyIsEnumerable(propertyName); 用于检查给定的属性在当前对象实例中是否存在
toLocaleString(); 返回对象的字符串表示,该字符串与执行环境的地区对应
toString(); 返回对象的字符串表示
valueOf(); 返回对象的字符串,数值,布尔值的表示。