# 基本类型
[toc]
## 基本数据类型
- Number
- String
- Boolean
- Object
- Null
- Undefined
## 类型识别
typeof
- Number->number
- String->string
- Boolean->boolean
- Object->object
- Null->object
- Undefined->undefined
## 原始类型和引用类型
原始类型
- Number
- String
- Boolean
- Null
- Undefined
引用类型
- Object
存储的是指针
例子:连等
```javascript
var a = {n:1};
var b = a; // 持有a,以回查
a.x = a = {n:2};
alert(a.x);// --> undefined
alert(b.x);// --> {n:2}
```
事实上,解析器在接受到 `a = a.x = {n:2}` 这样的语句后,会这样做:
找到 `a` 和` a.x `的指针。如果已有指针,那么不改变它。如果没有指针,即那个变量还没被申明,那么就创建它,指向 `undefined`。
`a `是有指针的,指向` {n:1}`;`a.x` 是没有指针的,所以创建它,指向 `undefined`。
然后把上面找到的指针,都指向最右侧赋的那个值,即 `{n:2}`。
所以执行以后,就有了如下的变量关系图。
![](https://box.kancloud.cn/81a90750e165910a5dc337b367780f25_800x252.png)
http://pythontutor.com/visualize.html#mode=edit
- 页面制作
- HTML
- 标签
- css
- 选择器
- 文本
- 盒模型
- 背景
- 布局
- 变形
- 过渡和动画
- JavaScript程序设计
- 基础篇
- 基本语法
- 基本类型
- 运算符与表达式
- 语句
- 数值
- 字符串
- 对象
- 数组
- 函数
- Date
- RegExp
- JSON
- 进阶篇
- 类型进阶
- 函数进阶
- 原型
- 变量作用域
- 闭包
- 面向对象
- DOM编程艺术
- 基础篇
- 文档树
- 节点操作
- 属性操作
- 样式操作
- 事件
- 数据通信
- 数据存储
- 动画
- 音频与视频
- canvas
- BOM
- 表单操作
- 列表操作
- 实践篇
- 组件实践
- 页面架构
- CSS Reset
- 布局解决方案
- 居中布局
- 多列布局
- 全屏布局
- 响应式
- 页面优化
- 规范与模块化
- 规范
- 模块化
- 产品前端架构
- 协作流程
- WEB系统
- 角色定义
- 协作流程
- 职责说明
- 接口设计
- 接口规范
- 规范应用
- 本地开发
- 版本管理
- 分支模型
- git
- 技术选型
- 模块化
- 框架
- 开发实践
- 系统设计
- 系统实现
- 测试发布