我理解function expression
和function declaration
之间的区别是什么,但是当涉及到类的引用时,它们有何不同?喜欢哪里可以在课堂内使用以下someFunction
,哪里不能?哪个类可以在哪里实例化?
class xyz {
someFunction(){
// Function code
}
}
VS
class xyz {
var someFunction = function(){
// Function code
}
}
答案 0 :(得分:3)
当您使用函数声明时,该函数将转到类原型。
class xyz {
someFunction(){
// Function code
}
}
上面的类可以表示为函数构造函数:
function xyz() {
//Code.
}
xyz.prototype.someFunction = function() {
//Some code
}
所以someFunction()将成为xyz原型的一部分。
在类中使用它们时,函数表达式会引发无效的语法错误。 但是当你在经典函数构造函数中使用函数表达式时,该函数只是一个局部变量,xyz实例无法访问它。
function xyz()
{
var someFunction = function(){
// Function code
}
}
答案 1 :(得分:1)
此案例与函数表达式和函数声明
之间的区别无关您将获得Unexpected identifier
,因为文档不允许或定义此类语法
class xyz {
var someFunction = function(){
// Function code
}
}
在class
语法中,您有三种选择来编写函数:
class xyz {
constructor() {
// Function code
}
someFunction() {
// Function code
}
static sayHi() {
// Function code
}
}
如果您使用文档不允许的其他表达式或语句,则会出现错误