es6最新資料型別 BigInt Symbol

2022-03-06 11:05:29 字數 1437 閱讀 7072

js中每乙個值都屬於某一種資料型別, 根據最新的語言標準,一共有8種型別

下面我來說一下新增的bigint及symbol

首先來看張圖

控制台敲出90099999999999992 == 90099999999999993 竟然等於true 90099999999999992 === 90099999999999993也等於true , 剛開始感覺重新整理我的三觀

經過度娘調查才知道

此標準下,無法精確表示的非常大的整數將自動四捨五入。確切地說,js 中的number型別只能安全地表示-9007199254740991 (-(2^53-1))9007199254740991(2^53-1)之間的整數,任何超出此範圍的整數值都可能失去精度。

解決方法

js 提供number.max_safe_integer常量來表示 最大安全整數,number.min_safe_integer常量表示最小安全整數:

或者就是使用新的資料型別bigint  直接在數字後面加n即可

隱式型別轉換

因為隱式型別轉換可能丟失資訊,所以不允許在bigintnumber之間進行混合操作。當混合使用大整數和浮點數時,結果值可能無法由bigintnumber精確表示。比如:

10 + 10n;    // → typeerror        10n > 5; // → true

math.max(2n, 4n, 6n);    // → typeerror       10 + number(10n); // → 20

下面是symbol

symbol是es6出的一種型別  本質上是一種唯一識別符號,可用作物件的唯一屬性名,這樣其他人就不會改寫或覆蓋你設定的屬性值 如圖

再次宣告相同key的symbol是會報錯

symbol 資料型別的另一特點是隱藏性,for···in,object.keys() 不能訪問

let id = symbol("id");

let obj = ;

for(let option in obj)

但是也可以用object.getownpropertysymbol 方法會返回乙個陣列,成員是當前物件的所有用作屬性名的 symbol 值。

官方提供了全域性註冊並登記的方法:symbol.for()  通過symbol.keyfor()取值

ES6 資料型別Symbol

1 symbol 定義的屬性,一般方法獲取不到 2 let name symbol 3 let obj 4 name 123 5 name 456 6 獲取symbol元素object.getownpropertysymbols 7object.getownpropertysymbols obj 8...

bigInt資料型別

簡述 bigint資料型別提供了一種方法來表示大於2 53 1的整數。bigint可以表示任意大的整數 作用解決精度缺失的問題 bigint資料型別比number型別支援更大的整數值,number型別只能安全的支援 9007199254740991 2 53 1 和 9007199254740991...

ES6新資料型別 Symbol

我們都知道es5 為我們提供了六種資料型別。分別是 物件 object 數字型別 number 布林型別 boolean 字串型別 string 空型別 null 未定義型別 undefind e6又為我們增加了一種型別 symbol 型別,他表示獨一無二的值。這樣下來js 就有七種資料型別了。一 ...