发展历程和语言特点
发展历程
- JavaScript组成(客户端)
- ECMAScript (ES)—— 核心规范,不可替代;JavaScript的语法标准
- BOM —— 宿主对象,可更换部分
- DOM —— 宿主对象
- 浏览器 —— 客户端JavaScript运行的宿主环境
- 目前 JavaScript 的运行环境有浏览器和 node.js 环境两种
- 浏览器下载 JavaScript 脚本文件后,由浏览器 JavaScript 引擎解释执行
- ES
- 最新:ES10
- ES5:ES2009
- ES6:ES2015
- ES5没有块作用域
- JavaScript,JScript和ActionScript 都遵从ES标准
语言特点
-
是一种直译式脚本语言
-
是一种弱类型、动态类型语言
数据类型
分类
- ES5数据类型(6种)及其划分(2类)
- 基本(原始)类型:Number、String、Boolean、Null、Undefined
- 引用(对象)类型:Object(Array、Function、Date等)
- typeof —— 判断数据类型
- 数据、变量和类型
- JavaScript 中的变量没有类型
- JavaScript 中的数据值有类型
- 变量可以随时持有任何类型的值
- 对变量执行 typeof 操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型
- 数据、变量和类型
存储
- 变量声明
- 变量赋值
- 内存空间
- 堆内存
- 存储的值大小不定,可动态调整
- 由程序员通过代码进行分配
- 空间大,运行效率相对较低
- 栈内存
- 存储的值大小固定
- 由系统自动分配内存空间
- 空间小,运行效率高
- 基本数据类型的临时变量分配在栈区
- 引用数据类型的变量的引用(地址)存储在栈区,被引用(指向)的对象存储在堆区
- 堆内存
区别
- 基本类型与引用类型的区别
- 访问机制不同
- 基本类型的值直接访问
- 引用类型的值通过引用访问,不能直接访问
- 先从栈中获取该对象的地址引用,再从堆内存中取得我们需要的数据
- 变量赋值不同
- 基本类型赋值 —— 相互独立互不影响
- 引用类型赋值
- 比较变量不同
- 值类型是判断变量的值是否相等(值比较)
- 引用类型是判断所指向的**内存空间(地址)**是否相同(引用比较)
- 参数传递不同
-
ECMAScript 中所有函数的参数都是按值来传递的
-
基本类型值:把变量里的数据值传递给参数,之后参数和变量互不影响
-
引用类型值:把对象的引用(地址)值传递给参数,参数和对象都指向同一个对象,相互影响
-
- 访问机制不同