# 1、数据类型
JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)
* number
int
float
* string
* bool
* null 空值,如果要设置一个变量的值为null,只能手动赋值为null。null也是一个对象。
* undefined 未定义,如果一个变量声明了,但是没有给值,则这个变量的值就是undefined
。
* object
纯对象(狭义上的对象)
数组
函数
JS中任何数据类型都可以看做是对象
> 通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值或引用类型,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。
> 对象又可以分成三个子类型,即狭义的对象(object)、数组(array)、函数(function),其实,更加广义的讲,原始类型的值(数值、字符串、布尔)也可以看做对象。
# 2、数据类型示例
```
var a = 123;
var b = 3.14;
var c = 'hello';
var d = true;
var e;
var f = null;
var g = ['apple', 'banana'];
var h = {name:'李四', age:30};
```
```
function m(){
}
可以输出查看效果。
```
# 3、判断数据类型
![](https://img.kancloud.cn/4a/3d/4a3d4237202d8a6a979ddbf6da265fc2_844x496.png)
使用typeof无法区分null、数组、对象,要想区分他们三个,必须使用instanceof。
使用instanceof的语法:
```
变量 instanceof 类型
```
类型:包括Array、Object
* 如果一个变量instanceof Array之后,结果为true,则表示变量是数组类型;
* 如果一个变量instanceof Object之后,结果为true,则表示变量是对象类型;
![](https://img.kancloud.cn/01/c1/01c12d8788f009d3c0fe053bd439fa4f_510x101.png)
下面一个函数可以判断数据类型到底是什么?
```
function panduan(x){
if(typeof(x) != 'object')
{
return typeof(x);
}
else
{
if(x instanceof Array)
{
return 'array';
}else if(x instanceof Object){
return 'object';
}else{
return 'null';
}
}
}
console.log(panduan(h));
```
# 4、原始类型和引用类型
引用类型指对象,指的是狭义上的对象。数组不应该算引用类型。
区分是否是引用类型,关键看内存图。
对象在内存的栈区只保存它的地址,在堆区保存它的实际内容,这种类型的变量就是引用类型。
![](https://img.kancloud.cn/31/cf/31cf29fd2fbe3e6564ae9159927b0dd8_635x514.png)
引用类型的一些应用:
![](https://img.kancloud.cn/eb/c7/ebc71bbb8592fafab74c4b521749dcd2_637x541.png)
- 第一天
- 一、学习目标
- 二、关于JavaScript
- 三、JS语法基础
- 四、变量
- 五、常量
- 六、运算符
- 七、数组
- 八、对象
- 九、数据类型
- 第二天
- 一、昨日复习
- 二、今日目标
- 三、数据类型转换
- 四、流程控制
- 五、函数基础
- 六、作用域
- 七、标准库(内置对象)
- 八、总结
- 第三天
- 一、昨日复习
- 二、今日目标
- 三、DOM介绍
- 四、元素(标签)节点查询操作
- 五、元素(标签)节点增删改操作
- 六、设置/获取元素的css样式
- 七、事件和事件对象
- 八、键盘keyCode对照表
- 第四天
- 一、昨日复习
- 二、今日目标
- 三、DOM之属性节点操作
- 四、DOM对象的通用属性
- 五、DOM获取元素的位置
- 六、事件绑定与移除
- 七、事件对象相关属性和方法使用
- 八、案例--可编辑的表格
- 第五天
- 一、今日目标
- 二、执行流程
- 三、定时器
- 四、闭包
- 五、案例
- 第六天
- 一、昨日回顾
- 二、今日目标
- 三、正则表达式概述
- 四、入门案例
- 五、正则语法
- 六、分组/捕获和反向引用
- 七、匹配中文(utf-8编码)
- 八、环视(断言/零宽断言/正向预测/负向预测)
- 九、正则对象的属性和方法
- 十、支持正则表达式的 String 对象的方法
- 十一、案例
- 十二、PHP中的正则表达式
- 第七天
- 一、昨日回顾
- 二、正则案例
- 三、PHP中的正则表达式
- 四、正则练习
- 五、仿淘宝评分小星星
- 六、标签页效果
- 七、横向下拉菜单
- 第八天
- 一、今日目标
- 二、面向对象编程
- 三、定义对象
- 四、对象相关操作
- 五、对象在内存中的存在形式
- 六、原型对象(关键)
- 七、定义对象进阶
- 八、函数进阶
- 第九天
- 一、昨日回顾
- 二、今日目标
- 三、Object
- 四、继承
- 五、this指向总结
- 六、案例(贪吃蛇)
- 第十天
- 一、今日目标
- 二、Ajax概述
- 三、工作原理
- 四、XMLHttpRequest对象介绍
- 五、使用Ajax的步骤
- 六、细节问题
- 七、JSON
- 八、Ajax中,服务器返回json格式的数据
- 九、案例--省市县三级联动
- 第十一天
- 一、昨日回顾
- 二、今日目标
- 三、完成省市县三级联动
- 四、优化省市县三级联动
- 五、服务器返回XML格式的数据
- 六、FormData对象
- 七、跨域请求
- 八、实现跨域请求
- 第十二天
- 一、Ajax回顾
- 二、今日目标
- 三、jQuery概述
- 四、快速入门
- 五、可编辑的表格
- 六、纵向导航菜单
- 七、横向导航菜单
- 八、标签页效果
- 第十三天
- 一、学习目标
- 二、杂项
- 三、jQuery中的事件
- 四、jQuery封装的Ajax
- 五、案例 -- 无刷新的分页
- 第十四天
- 一、昨日回顾
- 二、效果
- 三、跨域请求
- 四、文档操作
- 五、插件编写
- 六、自定义插件
- 七、第三方插件