object/class 中的函数声明
function declaration inside object/class
我有以下问题:在 Node/Javascript 为什么这个函数声明在对象或 class 中是错误的??
var obj = {
function x() {
/* code */
},
bar: function() {
/* code */
}
};
第一个函数声明x()
原因
function x() {
^
SyntaxError: Unexpected identifier
我不明白为什么我不能在对象或 class 中使用 function
关键字,使用 function x()
或只是 [= 有什么区别13=],只是 x()
工作正常,但在它前面添加 function
关键字 - 导致上述问题。为什么 ?
in Node/Javascript why this function declaration is wrong inside an object or a class??
当然错了,在JavaScript中一个object
是一对key/values,用逗号隔开。使用你的代码,你打破了这种语法,因为你没有在你的情况下声明 属性 ,你需要在编写 function x()
.
之前指定密钥
如果你参考MDN Object initializer reference你可以看到:
An object initializer is a comma-delimited list of zero or more pairs
of property names and associated values of an object, enclosed in
curly braces ({}).
如果您检查 New notations in ECMAScript 2015 section of Docs,您会发现写 function x()
、x()
或 x()
.
之间的区别
并且根据 docs these are possible Method definitions 语法:
var o = {
property: function (parameters) {},
get property() {},
set property(value) {}
};
您需要在 Javascript 中为它们的对象分配一个键,第二个可以工作,因为您有一个分配给它的键是 bar,而在第一个中则没有。尝试在函数声明之前添加密钥,如下所示:
var obj = {
foo:function x() {
/* code */
},
bar: function() {
/* code */
}
};
我有以下问题:在 Node/Javascript 为什么这个函数声明在对象或 class 中是错误的??
var obj = {
function x() {
/* code */
},
bar: function() {
/* code */
}
};
第一个函数声明x()
原因
function x() {
^
SyntaxError: Unexpected identifier
我不明白为什么我不能在对象或 class 中使用 function
关键字,使用 function x()
或只是 [= 有什么区别13=],只是 x()
工作正常,但在它前面添加 function
关键字 - 导致上述问题。为什么 ?
in Node/Javascript why this function declaration is wrong inside an object or a class??
当然错了,在JavaScript中一个object
是一对key/values,用逗号隔开。使用你的代码,你打破了这种语法,因为你没有在你的情况下声明 属性 ,你需要在编写 function x()
.
如果你参考MDN Object initializer reference你可以看到:
An object initializer is a comma-delimited list of zero or more pairs of property names and associated values of an object, enclosed in curly braces ({}).
如果您检查 New notations in ECMAScript 2015 section of Docs,您会发现写 function x()
、x()
或 x()
.
并且根据 docs these are possible Method definitions 语法:
var o = {
property: function (parameters) {},
get property() {},
set property(value) {}
};
您需要在 Javascript 中为它们的对象分配一个键,第二个可以工作,因为您有一个分配给它的键是 bar,而在第一个中则没有。尝试在函数声明之前添加密钥,如下所示:
var obj = {
foo:function x() {
/* code */
},
bar: function() {
/* code */
}
};