我有以下问题:在Node / Javascript中,为什么此函数声明在对象或类中是错误的?
var obj = {
function x() {
/* code */
},
bar: function() {
/* code */
}
};
第一个函数声明x()
引起原因
function x() {
^
SyntaxError: Unexpected identifier
我不明白为什么我不能在对象或类中使用function
关键字,使用function x()
或仅使用x()
,仅使用{{ {1}}可以正常工作,但是在其前面添加x()
关键字-会导致上述问题。为什么呢?
答案 0 :(得分:2)
您需要在Javascript中为其对象分配一个键,第二个键有效,因为您分配给它的键是bar,而第一个键没有。尝试在函数声明之前添加键,如下所示:
var obj = {
foo:function x() {
/* code */
},
bar: function() {
/* code */
}
};
答案 1 :(得分:1)
在Node / Javascript中,为什么此函数声明在对象或类内部错误?
当然是错误的,在JavaScript中,object
是一对键/值,用逗号分隔。对于您的代码,您正在破坏这种语法,因为您没有在声明您的情况下的属性,因此需要在编写function x()
之前指定键。
如果您引用MDN Object initializer reference,则会看到:
对象初始值设定项是零或更多对的逗号分隔列表 属性名称和对象的关联值,包含在 大括号({})。
如果您勾选New notations in ECMAScript 2015 section of Docs,将会看到写function x()
,x()
或仅写x()
的区别。
根据docs,这些语法可能是 Method definitions 语法:
var o = {
property: function (parameters) {},
get property() {},
set property(value) {}
};