[英]Why are there brackets outside of the curly brackets in this function and what does this mean?
我在GraphQL相關的文章中遇到了以下代碼。 為什么在fields參數的花括號之外有括號,這是什么意思?
var PersonType = new GraphQLObjectType({
name: 'Person',
fields: () => ({
name: { type: GraphQLString },
bestFriend: { type: PersonType },
})
});
以下是我知道的函數表達式/聲明:
標准命名函數
function sayHello() {
alert("hello!");
};
ES6匿名函數
() => {
alert("hello!");
};
自調用功能
(function sayHello() {
alert("hello!");
})();
自調用ES6匿名函數
(() => {
alert("hello!");
})();
據我所知,fields函數不適合以上任何一個。
括號可以使函數返回對象,而不必用return
大括號括起來。
例如,這不起作用 :
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 },
}
好吧,看起來很像功能塊語法。 實際上,這就是解釋器所假定的,然后當他們看到奇怪的key: value
時拋出語法錯誤key: value
期望標准表達式的key: value
語法。
換句話說,括號在這里表示函數返回一個對象,並且花括號不應該解釋為包含代碼塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.