写在前面
相信所有小白在前端学习过程中都有这样一个经历,遇到一个模糊的概念,就尝试查找各种帖子文章,在查看这些文章的时候,作用域(scope)、词法环境、静态作用域、执行上下文等名词相继出现。从中大概知道:
- 哦,js中变量是有提升的现象,
- 哦,还有函数的作用域是在它创建的时候的词法环境决定的,
- 哦,还有this是在运行是决定的不是在创建时决定的(what?TMD到底是怎么决定的)。。。等等,再加上原型链、作用域链、闭包、匿名函数立即执行函数(IIFE)。
什么鬼!没有点耐心的同学估计都考虑过放弃前端这条路了!!这些概念我都听过,知道,但是模糊,有翻译问题,也有文章写作时间前后间隔过大(规范已经变更,但又没有标明),因此对同一个概念有不同解释,反而更加疑惑,到底谁的更权威。为了彻底了解自己写的代码到底再干些啥,笔者决定一探究竟,于是有了这一系列文章,让我们一起共同成长。文章中有表达不当之处,欢迎指正,谢谢。