我意識到符號已被添加到ES2015,但沒有讀到太多關於他們。我現在已經做了一些閱讀,他們的目的顯然不是我想的。看來預期的目的是提供一種創建私有屬性的方法。我的理解是,它在某些功能語言中與某個原子類似,它備份爲here。我覺得很奇怪的是,它完全沒有提到我所incrorrectly認爲是他們的主要理由,這是在爲模式匹配字符串提供一個更有意義的替代方案:用符號似乎ES2015符號是否適合代替字符串作爲唯一的常量值?
export const FOO = 'This value is irrelevant as long as its unique';
// or
export const FOO = Symbol('A sensible description of what foo represents');
switch(blah):
case FOO: do_something();
...
在上述情況下具有許多優點,因爲它可以防止意外碰撞(即使兩個常量等於相同的字符串),從而消除了每次創建一個唯一字符串的負擔,併爲任何讀取代碼的人提供了一個明確的指示預期的目的。最後的考慮在某種程度上依賴於其他人同意我對應該使用符號的解釋。
無論如何,問題是,這是一個很好的符號用例,如果不是爲什麼不呢?
我不認爲在理解什麼是符號的人之間可能會有任何分歧。它只是可以作爲屬性使用的唯一標記。 – estus