最近這個文章很火,列了【合格】前端工程師須要掌握的技能表,看到做者一直不斷自省和學習來保持競爭力,同爲前端工程師深感慚愧,故寫下此文簡要回答一下文章裏提到的技術問題,技術通常,你們僅僅當作參考就成,文章很長會分多篇來寫。前端
傳送門 一名【合格】前端工程師的自檢清單git
JavaScript
規定了幾種數據類型
7種,根據堆棧儲存方式的不一樣分爲簡單類型和複雜類型es6
string
、number
、boolean
、null
、undefined
、symbol
(ES6新增,表示獨一無二的值)object
JavaScript
對象的底層結構是什麼
不甚瞭解,不敢妄言github
Symbol
類型在實際開發中的應用,手寫Symbol
Symbol
表示一個獨一無二的值,若是咱們使用了一個他人提供的對象,要爲此對象添加方法,那麼必須保證屬性名不能衝突,使用Symbol
就能很好的保證這一點,Symbol
與任何值都不相等!這個東西瞭解不深,傳送門-ES6標準入門-Symobl數組
JavaScript
中的變量具體儲存形式
變量的儲存方式取決於變量的類型是基本類型仍是引用類型安全
來源
:《JavaScript高級程序設計》69頁基本類型對應的內置對象,以及他們之間的裝箱拆箱操做
這個說的是基本包裝類型,我也理解不深,直接看《JavaScript高級程序設計》119頁前端工程師
理解值類型和引用類型
這個和4同樣,值類型就是基本類型,引用類型就是複雜類型函數
null
和undefined
的區別
null
表示空對象指針,將null賦值給變量,就表示該變量指向空對象
undefined
表示未定義,聲明一個變量但不初始化,那麼它的值就是undefined
null
主要表示一個變量尚未真正保存對象的時候,它的值就應該爲null
,這是意料之中的空,而undefined
一般表示意料以外的內容,如未初始化的變量,通常來講咱們不該該顯式的使用undefined
來源
《JavaScript高級程序設計》24頁post
至少能夠說出三種判斷JavaScript
數據類型的方式,以及他們的優缺點,如何準確的判斷數組類型學習
typeof
操做符,能夠判斷基本數據類型,對於引用數據類型全都返回Object
instanceof
操做符,obj instanceof Object
檢測Object.prototype
是否存在於參數obj
的原型鏈上,主要用來判斷變量是不是某個構造函數的實例,可是Object
是全部對象的原型,因此在obj instanceof Object
中,不管參數obj
是數組仍是函數都會返回true
constructor
是prototype
對象上的屬性,指向構造函數。根據實例對象尋找屬性的順序,若實例對象上沒有實例屬性或方法時,就去原型鏈上尋找,所以,實例對象也是能使用constructor
屬性的,一樣的這個也只能輸出構造函數如需判斷基本數據類型,使用typeof
,判斷引用類型用instanceof
和constructor
,實際上全部引用類型都是對象,只不過構造函數不一樣罷了,強行判斷引用類型,要麼只是判斷常見的幾種引用類型好比數組,函數,Date,正則等等,要麼只能輸出構造函數
準確判斷數組類型使用es5提供的方法Array.isArray(value)
來源
《JavaScript高級程序設計》83頁,一整章
可能發生隱式類型轉換的場景以及轉換原則,應如何避免或巧妙應用
隱式轉換通常說的是Boolean
的轉換
true
,空字符串會轉換成false
true
,0會轉換成false
true
固然Numebr
也會發生隱式轉換,不過這個通常用不到,也很簡單 來源
《JavaScript高級程序設計》26頁
出現小數精度丟失的緣由,JavaScript能夠存儲的最大數字、最大安全數字,JavaScript處理大數字的方法、避免精度丟失的方法
JavaScript
使用了IEEE 754
規範,二進制儲存十進制的小數時不能完整的表示小數Number.MAX_VALUE
等於1.7976931348623157e+308
,最大安全數字Number.MAX_SAFE_INTEGER
等於9007199254740991
BigInt
大整數,它能夠表示任意大小的整數,注意只能表示整數,而不受安全整數的限制來源
ES6標準入門、《JavaScript高級程序設計》29頁
先寫10個吧,太累了,果真,合格不是那麼好達到的,加油吧!!!
github,歡迎issue