- JavaScript的数据类型分为两种:原始类型和对象类型
原始类型又叫基本数据类型
对象类型又叫引用数据类型 - 区别:原始值不能更改,对象值可以更改。
原始值存储在栈内存(stack)中
对象值存储在堆内存(heap)中
栈中存储的是一个具体的值,可以直接拿来用,堆存储的是一块数据,每块数据有一个相应的地址,地址一般存在栈中的一个变量里
原始类型(基本数据类型)
共有<strong>5种</strong>原始类型
number, string, boolean, null(空), undefined(未定义)
数字(number)
- 整型:一般以十进制,也可以使用十六进制。
- 浮点型:
坑!
js通过一种二进制法表示分数,转换成我们常用过的十进制分数,会产生一个精度问题,如:
var x = 0.3 - 0.2
var y = 0.2 - 0.1
x == y // false
x == 0.1 //false
x = 0.09999999999999998
y = 0.1
所以当使用浮点数进行计算的时候,要根据需要注意取整,比如动画。
字符串(string)
一组放在引号里的大串字符序列
可以使用<strong>String对象</strong>的所有属性和方法(存在隐式转换)
属性:str.length
常用方法:str.charAt(0); str.substring(1,4); str.indexOf('e'); str.split('e');
布尔值
任意的JS值都可以转为布尔值
undefined,null,0,-0,NaN,""空字符串都会转成false
除此之外,包括<strong>对象、数组</strong>,都会转成true
null(空)
是一个控对象的占位符,类型typeof(null)为object
undefined(未定义)
typeof为undefined
<strong>null,undefined,NaN的区别</strong>
一 类型分析
未定义的值和定义但还没有赋值的值为undefined
null是一种特殊的object
NaN是一种特殊的number
二 比较运算
1)undefined与null是相等(==),但不全等(===);
2)NaN与任何值都不相等,与自己也不相等。
对象类型
对象是属性的集合,每个属性都由名/值对构成。值可以是原始值,如数字、字符串,也可以是对象
- 普通的JS对象是“命名值”的无序集合
- 数组是一种特殊的对象,表示带编号的值的有序集合,拥有一些和普通对象不同的特有行为特征
- 函数也是一种特殊的对象
类(class)
数组(Array)类
函数(Function)类
日期(Date)类
正则(RegExp)类
错误(Error)类