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 Хорошая мысль, я только что перешел к разделу «литералы». Я это исправлю.