首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何调用仅用于作用域的块?

如何调用仅用于作用域的块?
EN

Stack Overflow用户
提问于 2013-07-11 00:17:28
回答 2查看 91关注 0票数 1

JavaScript有许多类型的块,如while块、if块、for块。ES6引入了块作用域,因此“纯语义”、“匿名”的块是有意义的:

代码语言:javascript
代码运行次数:0
运行
复制
{ let a = 'I am declared inside a block'; }
console.log(a); // ReferenceError: a is not defined

上面的块类型(仅用于作用域)是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 00:20:02

下面是相关的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_(Merge_into_let_Statement)

let语句为变量提供局部作用域。它的工作方式是在单个代码块的词法范围内绑定零个或多个变量;否则,它与block语句完全相同。特别要注意的是,在let语句内使用var声明的变量的作用域仍然与在let语句外部声明的变量的作用域相同;这样的变量仍然具有函数作用域。

在某些情况下,文档将其称为let blocklet expression (如果在表达式上下文中)或implicit block

在您的示例中:

代码语言:javascript
代码运行次数:0
运行
复制
{ let a = 'I am declared inside a block'; }
console.log(a); // ReferenceError: a is not defined

不能在其作用域之外获取a的值。这正是作用域要做的事情。但是,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
{ let a; // instantiated inside this block
    a = 'I am assigned inside a block';
    console.log(a); // returns the value of a
}
票数 1
EN

Stack Overflow用户

发布于 2013-07-11 00:18:54

我假设它们被称为let块。根据MDN的说法,我似乎表面上是对的:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#let_statement

阅读let语句下的“作用域规则”部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17575825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档