Javascript 为什么这个函数中的花括号外有括号?这是什么意思?
我在一篇文章中遇到了以下代码。为什么字段参数中的花括号外有括号?这是什么意思 以下是我知道的函数表达式/声明: 标准命名函数 ES6匿名函数 自调用函数 自调用ES6匿名函数Javascript 为什么这个函数中的花括号外有括号?这是什么意思?,javascript,function,Javascript,Function,我在一篇文章中遇到了以下代码。为什么字段参数中的花括号外有括号?这是什么意思 以下是我知道的函数表达式/声明: 标准命名函数 ES6匿名函数 自调用函数 自调用ES6匿名函数 据我所知,fields函数不符合上述任何条件。括号用于使函数返回对象,而不必将整个对象用大括号括起来 例如,这不起作用: 因为当您想要返回一个对象时,{}将被解释为一个块 您可以这样做: var PersonType = new GraphQLObjectType({ name: 'Person', fields:
据我所知,fields函数不符合上述任何条件。括号用于使函数返回对象,而不必将整个对象用大括号括起来 例如,这不起作用: 因为当您想要返回一个对象时,{}将被解释为一个块 您可以这样做:
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => {
return { name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
}
});
但这似乎不如只使用圆括号好,因为圆括号会导致函数返回对象。圆括号使函数返回对象,而不必将整个对象用大括号括起来 例如,这不起作用: 因为当您想要返回一个对象时,{}将被解释为一个块 您可以这样做:
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => {
return { name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
}
});
但这似乎不如只使用括号好,因为括号会导致函数返回对象。如果没有括号,它会是什么样子
fields: () => {
name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
这看起来非常像函数块语法。事实上,这就是解释器将要假设的,然后当他们看到奇怪的key:value语法时抛出语法错误,而标准表达式是预期的
换句话说,括号表示函数返回一个对象,大括号不应被解释为包含一个代码块。如果没有括号,它会是什么样子
fields: () => {
name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
这看起来非常像函数块语法。事实上,这就是解释器将要假设的,然后当他们看到奇怪的key:value语法时抛出语法错误,而标准表达式是预期的
换句话说,括号表示函数返回一个对象,并且不应将大括号解释为包含代码块。返回对象用括号括起来,这样大括号就不会被视为函数体,而是一个对象。返回对象用括号括起来,这样大括号就不会被视为函数体,而是一个对象对象。阅读总是有用的。啊,明白了@蒂姆谢谢你的链接。我现在在高级语法下看到它。我发现用文字向谷歌表达我的问题有点困难,但现在很明显,我应该更深入地研究箭头函数。阅读总是有用的。啊,明白了@蒂姆谢谢你的链接。我现在在高级语法下看到它。我发现用文字向谷歌表达我的问题有点困难,但现在很明显,我应该更深入地研究箭头函数。
(() => {
alert("hello!");
})();
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => { // interpreted as a block not an object
name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
});
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => {
return { name: { type: GraphQLString },
bestFriend: { type: PersonType },
}
}
});
fields: () => {
name: { type: GraphQLString },
bestFriend: { type: PersonType },
}