bigint
引用資料型別
function
number數字
infinity:無限大 -infinity:無限小
把其它資料型別轉換為number型別
console.log(typeof nan); //->'number'
console.log(typeof infinity); //->'number'
console.log(nan === nan); //->false
console.log(object.is(nan, nan)); //->true
string字串
把其它值轉換為字串
let n = '10',
m = 10;
console.log(10 + n); // 「+」有一邊出現了字串「前提:有兩邊」會變為字串拼接 『1010』
console.log(+n); // 「+」只有一邊,把值轉換為數字 10
console.log(++n); // 「++」和上面一樣也是轉換為數字,但是還會自身累加一 11
擴充套件:加號一邊為物件變為字串拼接的底層機制
let obj =
};console.log(10 + obj); //->' defalt' 20
console.log(number(obj)); //->'number' 10
console.log(string(obj)); //->'string' 10
以下 new number(10)這個實力物件沒有重寫symbol.toprimitive但是結果得出20 ,因為直接呼叫了此物件的valueof()
console.log(10 + new number(10)); //->20 new number(10).valueof()
補充知識點:symbol.toprimitive的含義和用法
symbol.toprimitive 是乙個內建的 symbol 值,它是作為物件的函式值屬性存在的,當乙個物件轉換為對應的原始值時,會呼叫此函式。
const object1 =
return null;
}};//物件前只有乙個加號是要將其轉換為數字
console.log(+object1);//=>null
// 乙個沒有提供 symbol.toprimitive 屬性的物件,參與運算時的輸出結果
var obj1 = {};
console.log(+obj1); // nan
console.log(`$`); // "[object object]"
console.log(obj1 + ""); // "[object object]"
// 接下面宣告乙個物件,手動賦予了 symbol.toprimitive 屬性,再來檢視輸出結果
var obj2 =
if (hint == "string")
return true;
}};console.log(+obj2); // 10 -- hint 引數值是 "number"
console.log(`$`); // "hello" -- hint 引數值是 "string"
console.log(obj2 + ""); // "true" -- hint 引數值是 "default"
symbol():建立唯一值new symbol(); //uncaught typeerror: symbol is not a constructor
symbol()建立的是唯一值
// console.log(symbol('aa') === symbol('aa')); //->false
給物件建立不可獲取的唯一值
let obj = ;
console.log(obj[symbol()]); //->undefined
給物件建立可獲取的唯一值
let x = symbol();
let obj = ;
console.log(obj[x]); //->100
很多js的內建原理都是基於這些symbol的屬性來處理的bigint:大數symbol.toprimitive
symbol.hasinstance
symbol.tostringtag
symbol.iterator
大型專案中,伺服器返回給客戶端的資料中可能出現大數「伺服器資料庫中可以基於longint儲存數值,這個值可能會超過最大安全數字」
number.max_safe_integer : 9007199254740991 最大安全數字
number.min_safe_integer :-9007199254740991最小安全數
超過安全數字進行運算,結果是不準確的
MySQL的一些資料型別
如果乙個float型資料轉成二進位制後的第32位之後都是0,那麼資料是準的 如果乙個float型資料轉成二進位制後的第32位之後不全為0,則資料就會存在誤差 float和double型別的區別和誤差 但是decimal型別是mysql官方唯一指定能精確儲存的型別,也是dba強烈推薦和金錢相關的型別都...
關於js資料型別的一些知識點(一)
學習js有接近3個月了,一直沒有系統梳理過一些知識點,再翻看以前的學習筆記的時候,希望可以整理總結一下。一 基本資料型別有 number,string,boolean,null,undefined,object。六種。array 陣列 function 函式 均為物件 引用 型別。二 資料型別之間轉...
js 一些你不可忽視的細節
一 變數宣告 如果在var語句中沒有初始化變數,變數自動取 jscript 值undefined。儘管並不安全,但宣告語句中忽略var關鍵字是合法的 jscript 語法。這時,jscript 直譯器給予變數全域性範圍的可見度。當在過程級中宣告乙個變數時,它不能用於全域性範圍 這種情況下,變數宣告必...