Symbol.for()
Symbol.for() 靜態方法會在一個執行時範圍內的全域性 Symbol 登錄檔中搜索具有給定鍵的現有 Symbol,如果找到則返回它。否則,會在全域性 Symbol 登錄檔中建立一個具有此鍵的新 Symbol。
試一試
console.log(Symbol.for("bar") === Symbol.for("bar"));
// Expected output: true
console.log(Symbol("bar") === Symbol("bar"));
// Expected output: false
const symbol1 = Symbol.for("foo");
console.log(symbol1.toString());
// Expected output: "Symbol(foo)"
語法
js
Symbol.for(key)
引數
key-
字串,必需。Symbol 的鍵(也用於 Symbol 的描述)。
返回值
如果找到,則返回具有給定鍵的現有 Symbol;否則,建立一個新的 Symbol 並返回。
描述
與 Symbol() 不同,Symbol.for() 函式建立一個可在全域性 Symbol 登錄檔中使用的 Symbol。Symbol.for() 也並非每次呼叫都一定會建立一個新的 Symbol,而是首先檢查登錄檔中是否已存在具有給定 key 的 Symbol。如果存在,則返回該 Symbol。如果未找到具有給定鍵的 Symbol,Symbol.for() 將建立一個新的全域性 Symbol。
示例
使用 Symbol.for()
js
Symbol.for("foo"); // create a new global symbol
Symbol.for("foo"); // retrieve the already created symbol
// Same global symbol, but not locally
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false
// The key is also used as the description
const sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"
為了避免全域性 Symbol 鍵與你的其他(庫程式碼)全域性 Symbol 發生名稱衝突,最好為你的 Symbol 新增字首。
js
Symbol.for("mdn.foo");
Symbol.for("mdn.bar");
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-symbol.for |
瀏覽器相容性
載入中…