一、数据类型
JS分两种数据类型
基本数据类型:Number、String、Boolean、Null、Undefined、Symbol(ES6),这些类型可以直接操作保存在变量中的实际值。
引用数据类型:Object(在JS中除了基本数据类型意外的都是对象,数据是对象,函数是对象,正则表达式是对象)
1、基本数据类型(六种)存放在栈中
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问
- 1.Number数值类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一个数字)两种值
注意:在js中浮点数的精度是17位,计算是二进制的计算数 据,所以得到的不是整数
NaN:非数字类型,属于数值型基本数据类型
特点:
1):设计任何的NaN操纵都会返回NaN
console.log('ab'/10);//NaN
2):NaN不等于自身
console.log(NaN == NaN); //false
判断是否是Number类型
1、isNaN:判断是否是一个非数字类型,传入的非数字类型,返回true,否则返回false
注意:传入的参数首先会被转化为数值,如果参数类型为对象类型,先调用valueOf()方法,再确定该方法返回的值是否可以转化为数值类型,如果不能,再调用toString()方法,再确定返回值。
2、typeof
console.log(typeof 12) //Number
数值类型的转换
Number():可以用于任何的数据类型
ParseInt():提取整数数值
PaseFloat():提取浮点数值
- 2.String字符串类型
特点:
1.字符串的单引号和双引号作用效果一样
2.字符串有length属性,可以取得字符串的长度
3.字符串的值是不可变的,所以很多的字符串的api不会改变原字符串值
字符串转换:
String():适用于任何的数据类型(null_>null undefined _> undefined)
toString():null 和undefined没有这个功能
console.log(null.toString());//error报错
3.Boolean布尔类型
该类型只有两个值:true、false
//转换为`boolean`:`Boolean()`
Boolean(undefined) //false
Boolean(null) //false
Boolean(非空对象包括空数组[]和空对象):true
Boolean(非0) // true || Boolean(0和NaN) //false
Boolean(非空包括空格字符串) //true || Boolean("") //false
4.Null空对象指针类型
如果定了一个对象,初始化可以为null,因为null的基本类型是Null,再if语句中默认转化为false,在和数值计算默认为0
出现场景:对象不存在
5.Undefined
申明了变量但是没有初始化,默认为undefined,在if语句中默认转化为false
undefined:表示‘缺少值’,就是应该有一个值,但是没有定义,以下用法是典型的出现
undefined情况
(1)变量被申明,等于undefined
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined
(3)对象没有赋值的属性,该属性值为undefined
(4)函数没有返回值,默认返回undefined
6.Symbol
ES6新增的一个基本数据类型,表示唯一性
2、引用数据类型
引用数据类型也叫对象数据类型,包括function,object,array,date,RegExp灯可以适用 new创建的数据,又叫对象类型,他们是存放在堆内存中的数据
特点:
- 引用类型的值可以改变
- 引用数据类型可以添加属性和方法
- 引用数据类型的赋值是对象引用
- 引用类型的比较是引用的比较
- 引用类型是同时保存在栈区中和堆区中的,引用类型的存储需要在内存的栈区和堆区中共同完成,栈区保存变量标识符和指向堆内存的地址