joj*_*ohn 5 javascript ecmascript-6 reactjs
用const声明的函数与不使用let或const声明的函数与在ES6类中否则声明的函数之间有什么区别?
class App extends Component {
submitFood = () =>{
// some code
}
Run Code Online (Sandbox Code Playgroud)
上面的为什么可以正常工作,但是下面的声明给出了错误:
class App extends Component {
const submitFood = () =>{
// some code
}
Run Code Online (Sandbox Code Playgroud)
首先:您提供的示例都不是有效的 ES6。ES6 类的语法规则只允许在类体内定义方法。IE
class MyClass {
method1() {}
method2() {}
}
Run Code Online (Sandbox Code Playgroud)
然而,第一个例子是使用类字段提案。这个提议扩展了现有的语法以允许定义表单的属性
class MyClass {
someProperty = value;
}
Run Code Online (Sandbox Code Playgroud)
这些分配不是在类定义时评估,而是在实例化时评估。这是在构造函数中分配属性的语法糖:
class MyClass {
constructor() {
this.someProperty = value;
}
}
Run Code Online (Sandbox Code Playgroud)
您的第二个示例只是无效的语法,因为没有允许在 class 字段之前放置let或的语法规则const。
请记住,类字段不是变量声明或变量赋值。
Gam*_*msh -3
const submitFood = () =>{
// some code
}
函数的创建(submitFood=() {})和变量的创建是变量托管中的常见规则被阻止let和const。由于未定义,
因此失败。submitFood()(它会抛出一个ReferenceError)。