1.类型
1.1编程语言的特征
计算机程序通过操作值或文本来工作,编程语言中可以表示和操作的值被称为类型。
一门语言的特征主要是两个,一个是可以操作的类型集(也就是值和文本集),另一个是变量的工作方式
1.2 JavaScript类型
分为原始类型和对象类型
1.2.1原始类型
原始类型主要包括数值、字符串、布尔值
null和undefined也是原始值,但是他们不是数值、字符串、布尔值,通常被认为是特殊类型,并且是唯一成员
特殊类型Symbol,用于对语言进行拓展而不破坏其兼容性
1.2.2对象类型
除了原始类型以外的值都是对象,对象是属性的集合,每个属性都有一个名字和一个值(原始值或其他对象)。
特殊对象1
全局对象,全局对象的属性是全局性定义的标识符,可以在JavaScript的程序的任何地方使用。
特殊对象2
普通JavaScript对象是一个键值对的无序集合,但这门语言定义了一种特殊的对象,数组。数组表示一个数字值的有序集合,数组区别于普通的对象
特殊对象3
Set对象表示一组值的集合,主要用来去重
特殊对象4
Map对象标识键与值的映射,0: {"a" => 1}
特殊对象5
定型的数组,目的是便于对字节数组和其他二进制数据进行操作
RegExp类型标识文本模式
Date类型表示日期和时间支持基本的日期计算,单位是毫秒
Error及其子类型表示JavaScript运行期间可能发生的错误
特殊对象6
函数和类,后面详解
1.3 JavaScript特点
1.3.1 相比静态语言
Javascript向比于静态语言最大的差别在于,函数和类不仅仅是语法并且函数和类可以被当作JavaScript操作的值
1.3.2内存管理
JavaScript解释器会自动垃圾收集,这意味我们JavaScript程序员通常不需要关心对象或其他值的析构和释放。当一个值无法触达时或者程序无法以任何方式调用这个值时,解释器会认为这个值用不到,会自动的释放它占用的内存(但需要注意的是,不能让一些值在存续时间过长后仍可以触达,这就会导致它们无法被回收)
--析构函数:
析构函数是与初始化相反的过程,用来清空内存以便于接下来使用。对应的,如果使用new来申请空间,那么需要用delete来进行析构,如果只是基于堆栈来进行空间申请,那么当实例被删除的时候,析构函数就会被调用。
--内存释放:
在JS中内存的生命周期是分配内存,使用内存,释放内存。而释放内存是由垃圾回收机制执行
1.3.3类型的修改
JavaScript语言中,只有null和undefined不能调用方法的值。
JavaScript的对象类型是可以修改的,但是它的原始类型是不可以修改的。可修改类型的值是可以改变的,比如对象属性的值和数组的值,但是原始类型不能修改,数值、字符串、布尔值、null、undefined是不可修改的,数值是不能修改的,只能赋值或运算来实现,而字符串虽然可以看作字符串数组但是只能按索引访问字符但不能修改已有的字符串的字符。
类型转换
在JavaScript中可以*转换不同类型的值,,而且在很多时候JS会自动的帮你转换值,这种在转换会对相等的判断产生一定的影响