* 预处理机制让我对 js 中的声明有了更全面的认识,很多文章中提到的一个词是“提升”,与这里提到的预处理机制不无关联。
* 关于声明这块儿,这篇文章讲得也有点意思,不知道winter老师怎么看:
https://zhuanlan.zhihu.com/p/28140450
* 在我看来,if中的function声明在预处理阶段的”赋值“行为好像被if形成的块级作用域”拦截“了,导致这个赋值行为推迟到if语句块执行开始之前。(这里只是一种隐喻,并不准确)。
* let,const,class这些在js中的”后来者“由于没有历史包袱,行为大多更加正常(符合直觉,及早抛错)。这让我想到了一篇文章中介绍的temporal dead zone机制:http://es6.ruanyifeng.com/#docs/let#%E6%9A%82%E6%97%B6%E6%80%A7%E6%AD%BB%E5%8C%BA
展开