七種數據類型
boolean 、number、string、undefined、null、object 、symbol(標識類型)
symbol 含義
表示獨一無二的,是基本數據類型的一種,類似字符串。
它是為了解決命名重複問題。
symbol 創建
symbol類型數據只能使用 Symbol() 函數創建
注意:
1. symbol值不能與其他類型值進行運算
var s=Symbol();
s;
//輸出Symbol()
Symbol(des) 函數
該函數返回一個 symbol 類型的值,其中參數 des 表示對值的描述
var s=Symbol("name");
s;
//Symbol(name)
注意:
1. Symbol 函數返回的值永遠不相同,即便參數des相同,返回值也不同
轉換
類型數據不會自動轉換,可以轉換為字符串或布爾值
var s=Symbol("name");
String(s); // "Symbol(name)"
Boolean(s); // true
!s; // false
// if語句也可
if(s){
}
方法
1. Symbol.for(des)
登記symbol值,使用此方法生成的symbol值,如果des相同則認為是同一個值。
var s1=Symbol.for("ss");
var s2=Symbol.for("ss");
s1===s2;
//true
2. Symnbol.keyFor(var)
返回已登記symbol的描述值
var s1=Symbol.for("ss");
Symbol.keyFor(s1);
//"ss"
應用
1. 作為對象的key值
必須使用[],取值用.語法報錯(點語法認為後面是字符串)
var s=Symbol();
var obj={
[s]:1
};
obj; // {Symbol(): 1}
obj[s]; // 1
注:
(1)對象中屬性名是symbol則無法用for in 變量,使用 Object.getOwnPropertySymbol() 返回所有symbol屬性名的數組 或者使用 Reflect.ownKeys() 返回所有屬性名的數組
(2)用作私有屬性
文章到這裡結束,後續更多幹貨,關注後可以收到文章推送
【關注一下不迷路~】
閱讀更多 全棧前端 的文章