在写JS的时候习惯在哪里声明变量?为什么?

我不支持前置声明,理由:

1、前置声明前置到哪呢?答案当然是前置到最近的一个Function作用域,但你要知道这个“最近的一个Function作用域”说起来复杂,但实践进程中它老尼玛会变,对不对?由于我们的代码是不时重构的,能够为了复用,随时就把一段代码框起来变一个局部函数,或许匿名函数,这时那堆前置声明就得搬搬搬。

2、假设不靠工具来保证,你又怎样知道一个变量有没有前置声明过呢?当我要用到一个变量名的时分,我还得跑到顶上去查一下,由于我怕他人用过了这个变量名,并且不知道它仅仅是为了一句for循环定义的,还是为了把它定义成一个“局部全局变量”定义的,这个反省的进程能够横跨几十上百行代码,想想不蛋疼?

3、接1,假设我们图复杂,或许想增减轻构的时分搬移变量声明的本钱,能够会把一些变量搬到更外层的Function作用域外面——毕竟全局变量用起来就是个舒适。一朝一夕会有一些很恐惧的隐患:由于底下的闭包太多了,持有这群变量的函数很多会有超长生命周期(比如监听器),这会形成少量的变量被直接援用,无法回收,但其实他们原本就没啥用了。这等于说写顺序的时分原本只用关注小范围的声明周期,如今需求扩展这个视野了,这是一种担负。

提供最优质的资源集合

立即查看 了解详情