JS 原始數據
阿新 • • 發佈:2019-05-02
fin 都是 開頭 clas dex 布爾運算 () 十六 而是
原始數據
1 基本類型(基本數值、基本數據類型)是一種既非對象也無方法的數據。在 JavaScript 中,共有6種基本類型:string,number,boolean,null,undefined,symbol (ECMAScript 2015新增)。所有基本類型的值都是不可改變的。但需要註意的是,基本類型本身和一個賦值為基本類型的變量的區別。變量會被賦予一個新值,而原值不能像數組、對象以及函數那樣被改變。 var a=‘hello‘; console.log(a);//hello a.toUpperCase(); console.log(a);//hello 2 JavaScript 內部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。所以,1與1.0是相同的,是同一個數。 3 根據國際標準 IEEE 754,JavaScript 浮點數的64個二進制位,從最左邊開始,是這樣組成的。第1位:符號位,0表示正數,1表示負數;第2位到第12位(共11位):指數部分;第13位到第64位(共52位):小數部分(即有效數字);符號位決定了一個數的正負,指數部分決定了數值的大小,小數部分決定了數值的精度。 4 NaN 4.1 NaN是 JavaScript 的特殊值,表示“非數字”(Not a Number),主要出現在將字符串解析成數字出錯的場合。 ==>5 - ‘x‘ // NaN 4.2 NaN不是獨立的數據類型,而是一個特殊數值,它的數據類型依然屬於Number typeof NaN // ‘number‘ 4.3 NaN不等於任何值,包括它本身。NaN === NaN // false 4.4 數組的indexOf方法內部使用的是嚴格相等運算符,所以該方法對NaN不成立。 [NaN].indexOf(NaN) // -1 4.5 NaN在布爾運算時被當作false。 Boolean(NaN) // false 4.6 NaN與任何數(包括它自己)的運算,得到的都是NaN。 5 Infinity 5.1 Infinity表示“無窮”,用來表示兩種場景。一種是一個正的數值太大,或一個負的數值太小,無法表示;另一種是非0數值除以0,得到Infinity。 5.2 Infinity有正負之分,Infinity表示正的無窮,-Infinity表示負的無窮。 Infinity === -Infinity // false 5.3 Infinity大於一切數值(除了NaN),-Infinity小於一切數值(除了NaN)。 Infinity > 1000 // true -Infinity < -1000 // true 5.4 Infinity與NaN比較,總是返回false。 5.5 Infinity的四則運算,符合無窮的數學計算規則。 1 * Infinity // Infinity 1 - Infinity // -Infinity Infinity / 1 // Infinity 1 / Infinity // 0 5.6 0乘以Infinity,返回NaN;0除以Infinity,返回0;Infinity除以0,返回Infinity。 5.7 Infinity加上或乘以Infinity,返回的還是Infinity。 5.8 Infinity減去或除以Infinity,得到NaN。 5.9 Infinity與null計算時,null會轉成0,等同於與0的計算。 null * Infinity // NaN null / Infinity // 0 Infinity / null // Infinity 5.10 Infinity與undefined計算,返回的都是NaN。 6 parseInt() 6.1 parseInt方法用於將字符串轉為整數。 parseInt(‘12334‘) //1234 6.2 如果字符串頭部有空格,空格會被自動去除。 parseInt(‘ 12334 ‘) //1234 6.3 如果parseInt的參數不是字符串,則會先轉為字符串再轉換。 6.4 字符串轉為整數的時候,是一個個字符依次轉換,如果遇到不能轉為數字的字符,就不再進行下去,返回已經轉好的部分。 parseInt(‘12abc‘) //12 parseInt(‘12.3456‘) //12 parseInt(‘12e2‘) //12 parseInt(‘12em‘)//12 6.5 如果字符串的第一個字符不能轉化為數字(後面跟著數字的正負號除外),返回NaN。parseInt(‘e12em‘) //NaN 6.6 如果字符串以0x或0X開頭,parseInt會將其按照十六進制數解析。 parseInt(‘0x11‘) //17 6.7 如果字符串以0開頭,將其按照10進制解析。 parseInt(‘011‘) //11 6.8 對於那些會自動轉為科學計數法的數字,parseInt會將科學計數法的表示方法視為字符串,因此導致一些奇怪的結果。 6.9 parseInt方法還可以接受第二個參數(2到36之間),表示被解析的值的進制,返回該值對應的十進制數。默認情況下,parseInt的第二個參數為10,即默認是十進制轉十進制。如果第二個參數不是數值,會被自動轉為一個整數。這個整數只有在2到36之間,才能得到有意義的結果,超出這個範圍,則返回NaN。如果第二個參數是0、undefined和null,則直接忽略。 parseInt(‘011‘,2)// 3 parseInt(‘011‘,10) //11 7 parseFloat() 7.1 parseFloat方法用於將一個字符串轉為浮點數。 parseFloat(‘3.14‘) //3.14 7.2 如果字符串符合科學計數法,則會進行相應的轉換。 parseFloat(‘3.14e+2‘) //314 7.3 如果字符串包含不能轉為浮點數的字符,則不再進行往後轉換,返回已經轉好的部分。 parseFloat(‘3.14e+2dsadsad‘) //314 7.4 parseFloat方法會自動過濾字符串前導的空格。 parseFloat(‘\t\v\r3.14\n ‘) //3.14 7.5 如果參數不是字符串,或者字符串的第一個字符不能轉化為浮點數,則返回NaN parseFloat(‘‘) //NaN parseFloat(true) // NaN Number(true) // 1 parseFloat(null) // NaN Number(null) // 0 parseFloat(‘‘) // NaN Number(‘‘) // 0 parseFloat(‘3.14#‘) // 3.14 Number(‘3.14#‘) // NaN 8 isNaN() 8.1 isNaN方法可以用來判斷一個值是否為NaN。 isNaN(NaN) //true isNaN(1) //false 8.2 isNaN只對數值有效,如果傳入其他值,會被先轉成數值。比如,傳入字符串的時候,字符串會被先轉成NaN,所以最後返回true,這一點要特別引起註意。也就是說,isNaN為true的值,有可能不是NaN,而是一個字符串。對於對象和數組,isNaN也返回true. isNaN(‘q‘)//true isNaN({}) //true isNaN([‘123‘])//false isNaN([‘abc‘]) //true isNaN([])//false 8.3 判斷NaN更可靠的方法是,利用NaN為唯一不等於自身的值的這個特點,進行判斷。 function myIsNaN(value) { return value !== value; } 9 isFinite() 9.1 isFinite方法返回一個布爾值,表示某個值是否為正常的數值。 除了Infinity、-Infinity、NaN和undefined這幾個值會返回false,isFinite對於其他的數值都會返回true。 isFinite(Infinity) // false isFinite(-Infinity) // false isFinite(NaN) // false isFinite(undefined) // false isFinite(null) // true isFinite(1) // true
JS 原始數據