# 数据类型

* undefined

  数据已经声明但是没有赋值，推荐变量在初始化的时候就显示的进行赋值，这样使用typeof函数时可以显示为undefined的就是为声明的变量了
* Null

  指向对象的空指针，使用`typeof(Null)`时返回Object
* Boolean

  值包含了两个字面值`true和false`，ECMA中所有的数据类型都可以转化为这两个字面量中的一个
* Number

  数值的定义是由范围的，并且存在

  `0.1+0.2=0.30000000000000004`的:bug:

  * `isFinite`函数可以判断参数是否无穷
* NaN

  **not a Number** 非数值类型

  * `isNaN`函数可以判断参数是否是非数值类型
  * 字符串除了十六进制、小数点、八进制、科学计数法e、空字符串等情况外，都不能够转换为数值

    `isNaN('a')`返回false

  非字符类型向字符类型数据的转化函数

  * Number
  * parseInt ,可以提供第二个关于进制的参数
  * parseFloat可以解析小数，只有第一个小数点能被正常的解析

    `parseFloat("2.3.4")`返回NaN
* String

  unicode编码中的特殊字符

  ```javascript
  var text="hello \u06e9."
  console.log("\u06e9");
  text.length会把unicode字符当成一个字符
  # 打印۩
  ```

  字符串创建后就不可以修改，要修改的话系统会在后台先销毁原来的字符串，再将新的字符串进行填充

  * `toString`方法将除null和undefined数值转化为字符串，并且需要对应的值有toString方法
  * String方法则是将所有的数值转换为字符串，包括null和undefined
* Object

  Object是所有对象的基础，因此所有对象都具有以下属性和方法

  * constructor 函数 构造函数
  * hasOwnProperty 检查仅仅存在于当前对象的属性
  * propertyIsEnumrable是否枚举
  * toString
  * valueOf

```
```
