Javascript 为什么我应该使用块范围而不是函数范围?

Javascript 为什么我应该使用块范围而不是函数范围?,javascript,ecmascript-6,Javascript,Ecmascript 6,20年来,函数范围对我来说是完美的。现在我到处都读到,我应该使用let和const而不是var。我想这主要是因为这是一个新功能。为什么我更喜欢块范围?const具有明显的优势,它是一个常量绑定let有一个临时死区,禁止在同一范围内重新声明标识符,因此它有助于防止某些错误 除此之外,当您不需要块作用域时,继续使用var也没有什么错。const具有明显的优势,即它是一个常量绑定let有一个临时死区,禁止在同一范围内重新声明标识符,因此它有助于防止某些错误 除此之外,当您不需要块作用域时,继续使用va

20年来,函数范围对我来说是完美的。现在我到处都读到,我应该使用
let
const
而不是
var
。我想这主要是因为这是一个新功能。为什么我更喜欢块范围?

const
具有明显的优势,它是一个常量绑定
let
有一个临时死区,禁止在同一范围内重新声明标识符,因此它有助于防止某些错误


除此之外,当您不需要块作用域时,继续使用
var
也没有什么错。

const
具有明显的优势,即它是一个常量绑定
let
有一个临时死区,禁止在同一范围内重新声明标识符,因此它有助于防止某些错误



除此之外,当您不需要块作用域时,继续使用
var
也没有什么错。

因为JS长期以来被批评不尊重所有其他语言(至少是著名语言)都尊重的块作用域。现在JS正在通过填补许多空白向这些语言发展。你不应该这样做,除非你有充分的理由这样做。继续使用var的一个很好的理由是它是向后兼容的。const和let限制了代码运行的环境,但没有什么好处,严格模式(也向后兼容)也能带来类似的好处。你可以在这里阅读,为什么要使用let和const,这是关于“变量提升”@RobG谢谢!我认为同样,这个区块范围没有任何优势。我会在我的爱好项目中使用它,在那里我可以控制环境,否则ES5就可以了。@ibrahimmahrir我可以接受这一点作为理由。因此,对于其他语言的新手来说,学习js更容易。因为js长期以来因不尊重所有其他语言(至少是著名语言)都尊重的块作用域而受到批评。现在JS正在通过填补许多空白向这些语言发展。你不应该这样做,除非你有充分的理由这样做。继续使用var的一个很好的理由是它是向后兼容的。const和let限制了代码运行的环境,但没有什么好处,严格模式(也向后兼容)也能带来类似的好处。你可以在这里阅读,为什么要使用let和const,这是关于“变量提升”@RobG谢谢!我认为同样,这个区块范围没有任何优势。我会在我的爱好项目中使用它,在那里我可以控制环境,否则ES5就可以了。@ibrahimmahrir我可以接受这一点作为理由。所以对于其他语言的新手来说,学习js更容易。Const很好,但它可能会导致一些有趣的错误。。。例如,在初始化前询问
typeof
块变量会导致错误…@Akxe:如果变量尚未初始化,为什么要询问类型?我考虑了<代码>所引发的错误。我将保持
var
,我可能会通过我的爱好项目练习
let
const
。@Akxe-我认为这是由“
let
有一个暂时死区”所涵盖的。问题是
var
将返回
未定义的
,而
let
将使您的程序崩溃。const非常好,但是让我们来看看可能会导致一些有趣的错误。。。例如,在初始化前询问
typeof
块变量会导致错误…@Akxe:如果变量尚未初始化,为什么要询问类型?我考虑了<代码>所引发的错误。我将保持
var
,我可能会通过我的爱好项目练习
let
const
。@Akxe-我认为这是由“
let
有一个暂时死区”所涵盖的。问题是
var
将返回
未定义的
let
将使程序崩溃