let a=1; let b=1; console.log(a==b); //結果:true let x=Symbol('this is x'); console.log(typeof x); //結果:symbol let y=Symbol('y'); console.log(x==y); //結果: false
//這裏 Synbol 前面不能使用 new 操做符。 //防止對象的屬性被篡改
let sz={name:'曹偉',age:19,[Symbol('xh')]:'007'}; sz['name']='caowei123'; sz[Symbol('xh')]='009'; console.log(sz); //結果:Objectage: 19name: "caowei123"Symbol(xh): "007"Symbol(xh): "009"__proto__: Object console.log(sz.name); //結果:caowei123
let sVal = Symbol(); console.log(typeof sVal)
上面的代碼的輸出值是'symbol';javascript
前面不能使用new,不然會報錯;由於Symbol是一種值類型數據,這也是很好理解的.Symbol()用做Symbol值的描述,也能夠理解爲鍵(key),代碼實例以下:java
let s1 = Symbol('腳本之家'); let s2 = Symbol("2015");
經過鍵就能夠比較方便的區分兩個Symbol值。
鍵相同的兩個Symbol值並不相同:函數
let s1 = Symbol("腳本之家"); let s2 = Symbol("腳本之家"); console.log(s1 == s2);
上面兩個Symbol值是不相等的。
Symbol值不可以被隱式轉換爲字符串類型,代碼實例以下:this
let s = Symbol("腳本之家"); //報錯 `antzone ${sym}` //報錯 "antzone" + sym