【发布时间】:2017-11-15 19:51:21
【问题描述】:
我正在阅读一些 JavaScript 以供工作,并且遇到了一段我觉得很有趣的代码。我做了一些阅读并遇到了:
Is using 'var' to declare variables optional?
这说明了缺少 var 类型声明,因为将 var 置于冒泡可变全局而非全局状态的作用域中。
例子:
var foo = bar // locally scoped
foo = bar // outer scope, can have global ramifications
我的问题是,当将外部范围声明与匿名函数结合使用时,这是否可以接受?推荐的处理方式是什么?这是“好”的约定吗?这应该在本地范围内吗?出于我的目的,它在一个类中,所以我看不出它为什么不是本地范围的。再说一遍,JS 菜鸟,所以寻找一些见解。
例子:
updateThing = (e) => {
this.state.items = e.target.value;
}
非常感谢,谢谢。
【问题讨论】:
-
IMO - 尽可能清楚地保留您可以定义的所有内容。该代码可能有效,但新开发人员,或者假设您在一年内寻找这可能无法快速理解,不得不搜索您所指的范围内的位置。您可能还会遇到一些令人讨厌的范围提升,您真的想清楚地定义您的变量。我个人认为这不是一个“好的”约定,但如果有人不同意,我会很好奇为什么。
-
@ajmajmajma 看到这在很大程度上是我的事,代码没有 cmets 突出显示为什么它会在本地以外的任何范围内,这让我质疑如果我重构和本地范围它会发生什么。我喜欢把所有东西都写得尽可能明确,所以没有第二次猜测,所以我可能会 PR 它并在本地范围内。感谢您的评论。
-
是的,这是一个很好的用例,说明您为什么不想这样写东西。对不起,你必须处理这个!
标签: javascript reactjs function variable-declaration scoping