-
介绍
ECMAScript 是一个国际通过的标准化脚本语言。JavaScript 由 ECMAScript 和 DOM、BOM 三者组成。
ECMAScript:ECMAScript 是JavaScript 的语言规范,JavaScript 是 ECMAScript 的实现和扩展。
DOM:(document object model)文档对象模型
BOM:(browser object model)浏览器对象模型 -
数据类型
基本数据类型:String Number Boolean null undefined Symbol
引用数据类型:function Array Object Map Set -
判断数据类型的方法
typeof 运算符,检测一个变量的类型
使用方法:typeof 变量名/(表达式)
缺点:不能细分对象
instanceof 运算符,指出对象是否是特定类的一个实例
使用方法:object instanceof class
Object.prototype.toString.call()
constructor,它是原型对象的属性指向构造函数
使用方法:object.constructor -
let、var、const 的比较
let 和 const 不存在变量提升机制;var 允许重复声明,let、const 不可以重复声明;var 定义的变量,没有块的概念,可以跨块访问,不能跨函数访问,let 定义的变量,只能在块作用域里访问,不能跨块作用域访问,不能跨函数访问,const 用来定义常量,使用时必须初始化,只能在块作用域里访问,而且不能修改。 -
作用域和作用域链
作用域,是一个变量的可用范围
作用域的本质是一个保存变量的对象,作用域避免了不同范围内数据的相互干扰。
作用域分为两级,全局作用域(window对象)、函数作用域(函数作用域对象);es6就有了块作用域。
作用域和执行上下文的区别
全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了;
全局执行上下文环境是在全局作用域确定之后,js代码马上执行之前创建;
函数执行上下文环境,是在调用函数时,函数体代码执行之前创建;
作用域是静态的,函数定义好了就一直存在,且不会变化;上下文环境是动态的,调用函数时创建,调用结束时会释放
上下文环境是从属于所在的作用域
函数的生命周期:一个函数从创建到调用,最后调用完所经历的阶段就是一个函数的生命周期。
作用域链,是多级作用域链串联形成的链式结构,每个函数在创建时,就有自己的作用域链。一般情况下,变量取值到 创建这个变量的函数作用域中 取值。但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。
- promise
是ES6引入的异步编程的新解决方案,语法上promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。