Javascript - 声明没有类型声明的匿名函数,它们应该是本地作用域吗?

时间:2017-11-15 19:51:21

标签: javascript reactjs function variable-declaration scoping

我正在阅读一些JavaScript工作,并且遇到了一段我发现有趣的代码。我做过一些阅读并遇到过:

Is using 'var' to declare variables optional?

这说明缺少var类型声明,因为将var放入冒泡的可变全局非全局状态。

示例:

var foo = bar  // locally scoped
foo = bar // outer scope, can have global ramifications

我的问题是在将外部范围声明与匿名函数组合时,这是否可以接受,建议的处理方式是什么?是好的"惯例?这应该是本地范围的吗?为了我的目的,它在一个类中,所以我认为没有理由为什么它不是本地范围的。再说一遍,JS noob,所以寻找一些见解。

示例:

updateThing = (e) => {
    this.state.items = e.target.value;
}

非常感谢,谢谢。

1 个答案:

答案 0 :(得分:1)

  

声明没有类型声明的匿名函数

没有匿名函数声明(export default除外)。您拥有的所有示例都是带有初始化程序的赋值或变量声明。

  

将外部作用域声明与匿名函数组合时,这是否可以接受,建议的处理方法是什么?是好的"约定?

不,这是一种不好的做法。不要这样做。永远不要分配你没有在任何地方声明的变量。

  

为了我的目的,它在一个班级里面

如果您指的是class定义正文:赋值语法有experimental shortcut for property intialisations in the constructor。不要使用它,特别是如果你不知道它意味着什么。只需明确写出来:

class … {
    constructor(…) {
         …
         this.updateThing = (e) => {
             this.state.items = e.target.value;
         };
    }
    …
}

这不是变量赋值,与声明完全无关。