本文是对javascript高级程序设计一书的一些整理。
ECMAScript是JavaScript的核心组成部分,他描述了语言的基本语法和数据类型。
ECMAScript中有5种简单的数据类型(基本数据类型):Undefined,Null,Boolean,Number和String。还有一种复杂数据类型Object,Object的本质是由一组无序的键值对组成。因为ECMAScript不支持自定义数据类型,所以所有值最后都指向这6中数据类型。下面来介绍一下这6种数据类型。
1.Undefined 类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个值就是undefined。但如果连声明也没有声明,则会导致报错。
var name;//声明变量获得undefined值
console.log(name);//undefined
console.log(age);age没有声明,控制台报错。
但有一点要注意即使没有声明变量执行typeof操作都会返回undefined值。
console.log(typeof age);//age没有声明,控制台显示undefined.
2.Null类型
Null类型是第二个只有一个值的数据类型,这个特殊值是null。从逻辑角度讲,null值表示一个空指针。这引出一个现象,如下:
var obj = null;
console.log(typeof obj);//结果是obj。
所以如果定义的变量是用来保存对象的,那么最好先将该变量初始化为null。 事实上undefined是派生自null的,所以console.log(null == undefined)
的值为true。
3.Boolean类型
Boolean类型只有两个字面值:true和false。ECMAScript区分大小写所以True与False只是标识符,并不是布尔值。而且true和false与数值不是一回事,true不一定是1,false不一定是0。但是ECMAScript中所有类型的值都有与这两个值等价的值。可以用Boolean()将值转换成Boolean值。
var name = 'zhang';
var nameBoolean = Boolean(name);
下面是Boolean()对各种数据类型的转换规则:
数据类型 | 转化为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | 空字符串 |
Number | 非零数字 | 0和NAN |
Object | 任何对象 | null |
4.Number 类型
Number类型使用IEEE754格式来表示整数和浮点数。最基本的是整数的表示。
4.1整数
十进制数:var num = 42;
八进制数以0开头,如果后面有一位超过了7则会当十进制解析。并且八进制在严格模式下无效。
var num = 045;//八进制数
var num1 = 089;//无效的八进制数,解析成89
十六进制数以0x开头,后面跟十六进制数字(0~9和A~F),字母A~F可以大写也可以小写。
var num = 0xf; //十六进制的10。
4.2浮点数
浮点数就是数值中必须包含一个小数点,并且少数点后面必须至少有一位数字。由于浮点数需要的内存空间是保存整数值的两倍,因此ECMAScript会将一些浮点数转换为整数。如:
var floatNum = 1.1;
var floatNum1 = .1;//会被解析成0.1,但最好不要这样写。
var floatNum2 = 1.0;//会被转换成整数1
var floatNum3 = 1. ;//小数点后没有数字,会被解析成1
注意浮点数在运算时精确度远远不如整数。如:0.1+0.2的结果并不是0.3,而是0.30000000000000004。所以不要这样做:
if(a + b == 0.3) {//不要这样做。
do something;
}
Number类型中有一个特殊的数值为NaN,他用于表示一个本来要返回数值的操作数并未返回数值的情况。如任何数除以0都会返回NaN。另外NaN有两个特点:1>任何涉及到NaN的操作都会返回NaN。 2>NaN与任何值都不想等,包括NaN本身。NaN == NaN;//false
.
本文暂时先到这里,剩下的会在整理后陆续放出。