Существует ли установленный литерал в JavaScript?

javascript

#javascript #установить #ecmascript-6

Вопрос:

Я могу создать Set с new Set() помощью, так же, как я могу использовать конструкторы Array или Object или Boolean или Number .

Но существует ли синтаксис set literal, например, для массивов, объектов, логических значений, чисел и т. Д.?

Ответ №1:

Как указывали другие, синтаксиса литерала Set (или Map) пока нет. В этой теме обсуждения ES и в следующем обсуждении в Twitter появилось несколько идей.

Несколько предложенных примеров синтаксиса:

 const set = {<1, "two", false>}; // by Brendan Eich
const set = {. 1, "two", false .}; // by Axel Rauschmayer
 

Однако, насколько я вижу, пока нет предложений по реализации какого-либо из них.

Комментарии:

1. Это хорошо, что упоминается обсуждение в твиттере. Помогает лучше понять. Надеюсь, что литералы будут добавлены в ближайшее время. Я вообще не использую ключевое слово «new».

2. Как насчет {1, 2, 3} . Для пустого набора вы могли бы сделать {,} .

3. @JamRisser , как обсуждалось в обсуждении, связанном выше, этот синтаксис нельзя использовать, потому что, в отличие от языков программирования, таких как Python, JavaScript поддерживает сокращенный синтаксис для объектов, где { x, y } { x: x, y: y } предполагается, что вы уже определили x и y .

Ответ №2:

Ну, для литерального синтаксиса нет Set() , но вместо этого вы можете использовать массив. Они оба очень похожи и могут быть легко переключены между ними с помощью функций:

 Array.from(mySet) // Converts mySet into an array
new Set(myArray) // Creates a set from myArray
 

Комментарии:

1. Это не ответ на вопрос, в котором уже упоминается использование конструктора Set (которому обычно присваивается массив).

2. Я бы сказал, что он отвечает на вопрос, потому что сам вопрос звучит так: «существует ли буквальный синтаксис для Set() «, а ответ: «нет, но вот альтернатива».

3. @jered Этот ответ «нет, без ссылок на фоновое обсуждение, но вот альтернативный вариант, который уже упоминался в вопросе».

Ответ №3:

Нет, нет единого синтаксиса для объявления a Set . Если вы сомневаетесь, обратитесь к спецификации.

Комментарии:

1. Хотя я не думаю, что ваш ответ неверен, стоит отметить, что этот раздел, похоже, не охватывает литералы массива или литералы объектов, поэтому не является отличным источником для его опровержения.

2. @JamesThorpe Хорошая мысль, я только что перешел к разделу «литералы». Я это исправлю.