块级绑定新的最佳实践

ES6的发展阶段,被广泛认可的变量声明方式是:默认情况下应当使用let而不是var。对于多数JS开发者来说,let的行为方式正是var本应有的方式,因此直接用let替代var更符合逻辑。在这种情况下,你应当对需要受到保护的变量使用const

然而,随着更多的开发者迁移ES6上,一种替代方案变得更为流行,那就是在默认情况下使用const、并且只在知道变量值需要被更改的情况下才使用let。其理论依据是大部分变量在初始化之后都不应当被修改,因为预期外的改动是bug的源头之一。这种理念有着足够强大的吸引力,在你采用ES6之后是值得在代码中照此进行探索实践的。

🎈总结

letconst块级绑定将词法作用域引入JS。这两种声明方式都不会进行提升,并且只会在声明它们的代码块内部存在。由于变量能够在必要位置被准确声明,其表现更加接近 其他语言,并且能减少无心错误的产生。作为一个副作用,你不能在变量声明位置之前访问它们,即便使用的是typeof这样的安全运算符。由于块级绑定存在暂时性死区(TDZ), 试图在声明位置之前访问它就会导致错误。

letconst的表现在很多情况下都相似于var,然而在循环中就不是这样。在for-infor-of循环中,letconst都能在每一次迭代时创建一个新的绑定,这意味着在循 环体内创建的函数可以使用当前迭代所绑定的循环变量值(而不是像使用var那样,统一使用循环结束时的变量值)。这一点在for循环中使用let声明时也成立,不过在for循环中使用const声明则会导致错误。

块级绑定当前的最佳实践就是:在默认情况下使用const,而只在你知道变量值需要被更改的情况下才使用let。这在代码中能确保基本层次的不可变性,有助于防止某些类型的错误。

results matching ""

    No results matching ""