title: 1. 從新認識 JavaScript 類型
date: 2019-03-27 11:12:47 +0800
tags: [JavaScript數據類型]
categories: 重學前端系列筆記javascript
最新在看witter大神的專欄《重學前端》,感慨頗多,收益也頗多。以爲本身該重建一下前端的知識體系,因此跟着寫下這個筆記。
前端
let a
是屬於變量聲明階段,這個階段全部的變量的值都是 undefined
。a = 12
JS
** 解析引擎。這個變量是什麼類型以及它的值多少。JavaScript
執行的時候,若是遇到致命錯誤便會中止往下執行。//bad聲明方式 var a=b=2; // good var a=12,b=23; // 可是更指望使用let聲明,不用變量提高 let a = 12;
let str = "你是誰,我是望風披靡的孫悟空" Object.prototype.toString.call(str) // [object,String]; let arr = [1,4,56]; Object.prototype.toString.call(arr) // [object,Array];
如今JavaScript常見類型是這麼多,其中只有 Symbol
是 ES6
新提出來的,其他都是 ES6
以前早就熟悉的類
java
JavaScript
語言公認的設計失誤之一,因此,因此,咱們爲了不無心中被篡改,我建議使用 void 0
來來獲取 Nudefined
值。Null
的不一樣就是,Null
是 JavaScript
的關鍵字,在開發中能夠自由的獲取 Null
類型的變量true
和 false
JavaScript
中的內置對象,能夠經過 new
關鍵詞創造實例對象2^53-1
,String
並不是文本意義的字符串,而是字符串的 UTF16
編碼,咱們平常操做字符使用的 length
charAt
都是針對 UTF16
編碼UTF16
編碼以後的字符長度限制Note:現行的字符集國際標準,字符是以 Unicode 的方式表示的,每個 Unicode 的碼點表示一個字符,理論上,Unicode 的範圍是無限的。UTF 是 Unicode 的編碼方式,規定了碼點在計算機中的表示方法,常見的有 UTF16 和 UTF8。 Unicode 的碼點一般用 U+??? 來表示,其中 ??? 是十六進制的碼點值。 0-65536(U+0000 - U+FFFF)的碼點被稱爲基本字符區域(BMP)。
JavaScript
的內置對象,能夠經過 new
關鍵字創造實例**2^64-2^53+3**
個值NaN
(這個能夠用來檢測是否爲數字類型)、Infinity(正無窮大)、-Infinity(負無窮大)console.log(.00001 / -0); //結果:-Infinity console.log(.00000000001 / 0); //結果: Infinity
==
或者 ===
進行比較的console.log( .1 + .2 == .3 ); //結果:false; console.log(.1 + .2); // 結果:0.30000000000000004
console.log(Math.abs(.1 + .2 - .3) <=Number.EPSILON); // true
Number.EPSILONES6 Number 的一個常量。
Number.EPSILON 其實是 JavaScript 可以表示的最小精度。偏差若是小於這個值,就能夠認爲已經沒有意義了,即不存在偏差了。
key-value
結構**ES6**
新增的一個類型。其實說實話,到如今還不太清楚這個類型的做用,以及用法// 建立 Symbol 類型 let symbol = Symbol("其實,我是一個好人"); console.log(symbol)
JavaScript
中的內置方法進行轉換,例如 **parseInt**
**parseFloat**
都是將字符串轉化成數值類型。可是 **parseInt**
是遇到非數值就停下,而 **parseFloat**
遇到不屬於數字行列纔會停,**parseInt**
**parseFloat**
轉化的字符串,若是第一個字符不是數字的話,就會返回 NaN JavaScript
Math NaN Number
NaN**console.log(parseInt("6340.54")); // 結果:6340 console.log(parseFloat("4.648781655wr我是1"));結果:4.648781655 console.log(Number("2.2.22")); // 結果:NaN console.log(Number("5464646")) // 結果: 5464646
let str = 121343454545; str = str+ ""; console.log(typeof(str)) // 結果:string
let str = 13243545646; console.log( typeof( String(str) ) ) // 結果:string
**JavaScript**
中,類型之間存在裝箱轉換操做let str = 1323; console.log(typeof (String(str))); // string console.log(typeof (Symbol(str))) // symbol
List
和 Record
: 用於描述函數傳參過程。**Set**
:主要用於解釋字符集等。Completion Record
:用於描述異常、跳出等語句執行過程。Reference
:用於描述對象屬性訪問、delete 等。Property Descriptor
:用於描述對象的屬性。Lexical Environment
和 Environment Record
:用於描述變量和做用域。Data Block
:用於描述二進制數據。始發於算法