久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      es6新增的js基本數(shù)據(jù)類型有哪些

      es6新增的基本數(shù)據(jù)類型:1、Symbol類型,表示獨(dú)一無二的值,即Symbol實(shí)例是唯一、不可變的;它的產(chǎn)生是因?yàn)橐脕砦ㄒ坏臉?biāo)記,進(jìn)而用作非字符串形式的對(duì)象屬性,是確保對(duì)象屬性使用唯一標(biāo)識(shí)符,不會(huì)發(fā)生屬性沖突的危險(xiǎn)。2、BigInt類型,提供對(duì)任意長度整數(shù)的支持,主要是為了表達(dá)大于“2^53-1”的整數(shù)。

      es6新增的js基本數(shù)據(jù)類型有哪些

      前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
      Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

      本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

      基本數(shù)據(jù)類型 也稱為原始數(shù)據(jù)類型,包括String、Number、Boolean、undefined、null、Symbol、BigInt,其中SymbolBigInt為ES6新增。

      Symbol 類型

      Symbol 是 ECMAScript6 中引入的一種新的數(shù)據(jù)類型,表示獨(dú)一無二的值。Symbol 是原始值(基礎(chǔ)數(shù)據(jù)類型),且 Symbol 實(shí)例是唯一、不可變的。它的產(chǎn)生是因?yàn)橐脕砦ㄒ坏臉?biāo)記,進(jìn)而用作非字符串形式的對(duì)象屬性,是確保對(duì)象屬性使用唯一標(biāo)識(shí)符,不會(huì)發(fā)生屬性沖突的危險(xiǎn)。

      在 ES6 之前,對(duì)象的鍵只能是字符串類型,但是這樣有個(gè)問題,就是會(huì)造成鍵名命名沖突,后者覆蓋前者,這個(gè)時(shí)候就需要一個(gè)唯一值來充當(dāng)鍵名,Symbol 橫空出世。

      1、概念

      symbol 是一種基本數(shù)據(jù)類型,Symbol()函數(shù)會(huì)返回 symbol 類型的值,該類型具有靜態(tài)屬性和靜態(tài)方法。但是它不是構(gòu)造函數(shù),不能用 new Symbol()來創(chuàng)建。

      let symbol = Symbol(); typeof symbol; // "symbol"
      登錄后復(fù)制

      Symbol 作為對(duì)象屬性時(shí),當(dāng)在對(duì)象內(nèi)部時(shí),必須要用方括號(hào)括起來,不用方括號(hào)括起來代表的是字符串。

      let s = Symbol(); let obj = {   [s]: "Jack", }; obj[s]; // "Jack" obj.s; // undefined
      登錄后復(fù)制

      而且當(dāng)要取該屬性的值時(shí),不能用點(diǎn)運(yùn)算符,因?yàn)辄c(diǎn)運(yùn)算符后面同樣是字符串類型。

      創(chuàng)建 Symbol 數(shù)據(jù)類型時(shí),都是 Symbol()這么創(chuàng)建的,當(dāng)打印出來時(shí),都為 Symbol(),這樣很難區(qū)別各個(gè) Symbol 類型的變量是什么意思。所以在 Symbol 函數(shù)內(nèi)可以接收一個(gè)字符串的參數(shù),表示該定義 Symbol 類型變量的描述。

      let s1 = Symbol("a"); console.log(s1); // Symbol(a) s1.toString(); // "Symbol(a)"
      登錄后復(fù)制

      如果 Symbol 類型接收的一個(gè)對(duì)象類型的話,那就會(huì)先調(diào)用其內(nèi)部的 toString 方法,將其變?yōu)橐粋€(gè)字符串,然后才生成一個(gè) Symbol 值。

      let arr = [1, 2, 3]; let s1 = Symbol(arr); console.log(s1); // Symbol(1,2,3) let obj = {   toString: () => "abc", }; let s2 = Symbol(obj); console.log(s2); // Symbol(abc)
      登錄后復(fù)制

      Symbol 類型的變量是不能和其他變量參與運(yùn)算的,而且其只能轉(zhuǎn)為 String 類型和 Boolean 類型。

      let s = Symbol(); console.log("1" + s); // TypeError: Cannot convert a Symbol value to a string s.toString(); // "Symbol()" Boolean(s); // true Number(s); // TypeError: Cannot convert a Symbol value to a number
      登錄后復(fù)制

      2、Symbol.prototype.description

      當(dāng)給 Symbol 添加描述時(shí),可以通過 Symbol.prototype.description 來獲取該描述。

      let s = Symbol("Jack"); s.description; // 'Jack'
      登錄后復(fù)制

      3、Symbol.for(key)和 Symbol.keyFor(sym)

      最開始看到這兩個(gè)方法時(shí),我以為是兩個(gè)遍歷的方法。

      • Symbol.for(key):使用給定的 key 搜索現(xiàn)有的 symbol,如果找到則返回該 symbol。否則將使用給定的 key 在全局 symbol 注冊(cè)表中創(chuàng)建一個(gè)新的 symbol。

      • Symbol.keyFor(sym):從全局 symbol 注冊(cè)表中,為給定的 symbol 檢索一個(gè) key。

      let s1 = Symbol.for("foo"); let s2 = Symbol.for("foo"); s1 === s2; // true
      登錄后復(fù)制

      Symbol.for 會(huì)搜索有沒有以該參數(shù)作為名稱的 Symbol 值。如果有,就返回這個(gè) Symbol 值,否則就新建一個(gè)以該字符串為名稱的 Symbol 值,并將其注冊(cè)到全局。所以由其創(chuàng)建的兩個(gè)相同描述的值會(huì)相等。這種創(chuàng)建就和普通的 Symbol()有著截然不同的結(jié)果了:

      let s1 = Symbol("foo"); let s2 = Symbol("foo"); s1 === s2; // false
      登錄后復(fù)制

      因?yàn)椴还茉鯓?Symbol()返回的都是一個(gè)全新的值,換句話說 Symbol()生成的值沒有注冊(cè)在全局中,所以返回的值都是全新的,而 Symbol.for()會(huì)在先在全局中查找,有就返回這個(gè)值,沒有則創(chuàng)建新的值,但新的值也是掛載在全局中的。

      Symbol.keyFor(sym)是在全局中查找是否有該 Symbol 值,有則返回該描述。

      let s1 = Symbol.for("Jack"); Symbol.keyFor(s1); // 'Jack' let s2 = Symbol("Rose"); Symbol.keyFor(s2); // undefined
      登錄后復(fù)制

      因?yàn)?s2 沒有掛載在全局中,所以 Symbol.keyFor()找不到它,故返回 undefined。

      4、內(nèi)置的 Symbol 屬性

      除了定義自己使用的 Symbol 值以外,ES6 還提供了 13(有可能今后會(huì)

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)