我正在阅读有关功能范围与块范围的内容。并了解到Javascript具有功能范围。
现在,当我想到它时,我所知道的所有语言都具有功能范围。我真的不知道任何具有块范围的语言。你们能指点一些具有块范围的语言吗?
还有一个疑问,在具有块作用域的语言中,如何在循环块外部访问for循环的索引值?阻止范围有什么好处?
感谢。
答案 0 :(得分:1)
ALGOL 60是第一个使用块范围,其次是许多像C, C++, C#
...等等
查看此维基百科页面的Block scope部分。
拥有阻止范围的优势
块主要用于控制流,例如if,while, 和for循环,在这些情况下,块范围意味着范围 变量取决于函数执行流程的结构。 但是,具有块范围的语言通常也允许使用 “裸”块,其唯一目的是允许细粒度控制 变量范围。例如,辅助变量可以在a中定义 块,然后使用(比如,添加到具有函数范围的变量)和 当块结束时丢弃,或者while循环可能被包含在a中 用于初始化循环内部仅使用的变量的块 初始化一次。
答案 1 :(得分:-3)
道格拉斯·克罗克福德说道。“在JavaScript块中没有范围。只有函数具有范围 除了复合语句的要求外,不要使用块。“