# 👁️🗨️ Om Symbol i js
Symbol är en rätt så"ny typ i JS.
- Det finns inte så många exempel där det används.
- Men de skulle kunna vara mycket bra för visa praktiska problem.
❓ Vad är Symbol?
Symbol är ett unikt värde som inte lika med något annat än sig själv i din kod.
let s1 = Symbol();
let s2= Symbol();
s1 === s2 //false
- Varje gång Symbol anropas skapas ett nytt värde.
- Du använder inte syntaxen new Symbol() för att skapa en ny symbol.
- Du kan sicka med symbile en text för att påmina dig om vad Symbol är tillför.
- Exempel: new Symbol("Hej");
📣 Några kommentar om Symbol
Kan vara bra att ha men det är inte alltid så l'tt att se det om du inte har en större program där du har behov av att inte trasla till det
med redan namngiva variablar.
Vad använder vi då Symbol till?
Om du vill skilja på saker.
let my_key = Symbol();
let o = {"my_key": false};
o[my_key] = true;
o["my_key"] // false
o[my_key] // true
- Om du nhar olika tillståd i ditt program och du vill skilja på dem.
- Om du har ett objekt och vill lägga till en egenskap men vill inte att din nyckel ska kollidera med någon anna i objektet.
🀄️ Symbol i andra språk
Symbol finns inte i så många andra språk men det finns likande funktoner.
- I C använd #defione för att göra det lättare att läsa programmet.
- Exempel: define SERVER_ERROR 400
- I C++ har du typen "Enumerations" som programmeraren definerar.
- Exempoel: enum State {Active, Waiting, Done}};
🔄 Att konvertera till och från Symbol.
Det går inte att konvertera andra typer till en Symbol. Att konvertera Symbol till något annat ger olika resultat beronde på typ.
- Boolean(Symbol()) //true
- Number(Symbol()) //TypeError
- String(Symbol("Test")) //Symbol("Test")
🔬 Är det en Symbol?
Det går bra med en vanlig "typeof".
- typeof Symbol() //Symbol
- typeof Symbol("Debugg") //Symbol