# day03 数据类型和运算符
```js
js的数据类型有6大数据类型
5种基本数据类型
number 数值类型
string 字符串类型
boolean 布尔类型 true和false
undefined 未定义
null 空对象
1种特殊数据类型(复杂数据类型 引用数据类型 对象数据类型)
array 数组 []
object 对象 {}
function 函数 funtion(){}
```
## 1.number类型
- number数值类型:整数、小数、负数、16进制、8进制、NaN
```js
<script>
//number数值类型:整数、小数、负数、16进制、8进制、NaN
// 1.整数
var a = 10;
console.log(typeof (a));//number
// 2.小数
var b = 3.1415926;
console.log(typeof (b));//number
var d = .5;
console.log(d, typeof (d));//0.5 number
var e = 5.0;
console.log(e);//5
// 3.负数
var c = -10;
console.log(typeof (c));//number
// 4.NaN not a number 不是一个数 当运算没有结果的时候就是NaN
var x = NaN;
console.log(typeof (x));//number
var y = 10 / "你好";
console.log(y);//NaN
// 注意:任何两个NaN都不相等 == 判断左右两侧是否相等
console.log(NaN == NaN);//false
//------------------------了解-------------------
// 浏览器是显示10进制的数据 如果定义的8进制或者16进制 计算机会自动转成10进制
//5.8进制数:以0开头 范围在0-7之间
var x1 = 077;
console.log(x1);//63
var x2 = 0566;
console.log(x2);
// 6.16进制数据:以0x开头 范围在0-9 a-10 b-11 c-12 d-13 e-14 f-15
var x3 = 0xff;
console.log(x3);//255
// 7.精度缺失 0.1+0.2 == 0.3
// 计算机在运算的时候,会把数转换二进制数据然后再进行计算 计算结果再转成10进制 转换过程中会造成精度缺少
console.log(0.1 + 0.2 == 0.3);//false 只要不把小数点计算当成判断条件 是不会影响代码执行的
</script>
```
- ==NaN not a number 不是一个数 当运算没有结果的时候就是NaN==
```js
// 4.NaN not a number 不是一个数 当运算没有结果的时候就是NaN
var x = NaN;
console.log(typeof (x));//number
var y = 10 / "你好";
console.log(y);//NaN
// 注意:任何两个NaN都不相等 == 判断左右两侧是否相等
console.log(NaN == NaN);//false
```
## 2.string类型
- string字符串类型:引号( " " ' ')引起来的都是字符串 所有从页面获取的内容都是字符串数据类型
- 字符串.length:获取字符串的长度
- 字符串[下标]:.获取字符串中某个字符
- 字符串.charAt(下标):获取字符串某个字符
```html
<script>
// string类型 引号( " " ' ')引起来的都是字符串 所有从页面获取的内容都是字符串数据类型
var str1 = '文字';
var str2 = "文字1234";
console.log(typeof str1);//string
console.log(typeof str2);//string
// 1.获取字符串的长度 字符串.length
console.log(str1.length);//2
console.log(str2.length);//6
// 2.获取字符串中某个字符 字符串[下标] 从左往右开始下标从0开始 取对应下标位置的字符
console.log(str1[1]);//字
console.log(str2[4]);//3
// 3.获取字符串某个字符 字符串.charAt(下标) 获取对应下标位置的字符
console.log(str1.charAt(0));//文
console.log(str2.charAt(5));//4
// 4.字符串遇到+ 拼接
console.log(1 + 1);//2
console.log("1" + 1);//"11"
console.log(1 + 2 + "1");//"31"
</script>
```
## 3.boolean类型
- boolean布尔类型 true和false
```html
<script>
var b1 = true;
var b2 = false;
console.log(typeof b1, typeof b2);//boolean boolean
//作用:用作判断条件
if (false) {//如果判断条件为true 执行{}中的代码
console.log("真");
}
</script>
```
## 4.undefined和null类型
- undefined 未定义 null 空对象
```js
<script>
/*
undefined
未定义 你去快递站拿快递 但快递站没有你的包裹
null
空对象 你去快递站拿快递 快递员给了一个包裹 但是这个包裹是空的
*/
var odiv = document.getElementsByTagName("div")[0];
console.log(odiv);//undefined
/*
undefined 和null的区别?
undefined 未定义 声明变量没有赋值 没有存储空间
null 空对象 有存储空间
*/
</script>
```