JavaScript类型
- 基本类型有六种: null,undefined,boolean,number,string,symbol
let、const、var的区别
- let 和 const 不允许重复声明,var是可以重复声明的
- let 和 const 没有变量提升,必须先声明后使用;var 存在变量提升,可以先使用后声明
- let 和 const 有块级作用域,var没有
对原型的理解
- 原型包含prototype 和 __ proto__,原型可以节省内存空间、实现数据共享、实现继承
- 在执行函数定义的时候,显示原型prototype就会被创建,在实例化对象的时候,隐式原型 __ proto__就会被创建
- 因为函数本身也是对象,所以函数除了显示原型prototype外,也拥有隐式原型__ proto__
对执行上下文的理解
- 当代码要执行,但是没有执行,或者将要执行,在预解析之后,
此时出现了全局执行上下文环境(全局执行上下文),
创建了一个变量对象,用来收集var , function ,函数参数,确定this的指向,
默认全局执行上下文是确定了this是window,
这个变量对象会被压入到栈中(全局执行上下文的变量对象在栈中的最下面),
如果出现了函数调用,此时出现了局部执行上下文环境(局部执行上下文),
再次创建一个变量对象,用来收集函数参数,var ,function,改变this的指向,
这个变量对象会被再次压入栈中,在全局执行上下文的变量对象的上面,
如果当前函数调用完毕,此时出栈(把局部上下文的变量对象干掉),依次弹出变量对象,就结束了