《一名【合格】前端工程師的自檢清單》答案參考(一)

開篇

最近這個文章很火,列了【合格】前端工程師須要掌握的技能表,看到做者一直不斷自省和學習來保持競爭力,同爲前端工程師深感慚愧,故寫下此文簡要回答一下文章裏提到的技術問題,技術通常,你們僅僅當作參考就成,文章很長會分多篇來寫。前端

傳送門 一名【合格】前端工程師的自檢清單git

JavaScript基礎

變量和類型

  1. JavaScript規定了幾種數據類型
    7種,根據堆棧儲存方式的不一樣分爲簡單類型和複雜類型es6

    • 簡單類型:stringnumberbooleannullundefinedsymbol(ES6新增,表示獨一無二的值)
    • 複雜類型:object
  2. JavaScript對象的底層結構是什麼
    不甚瞭解,不敢妄言github

  3. Symbol類型在實際開發中的應用,手寫Symbol
    Symbol表示一個獨一無二的值,若是咱們使用了一個他人提供的對象,要爲此對象添加方法,那麼必須保證屬性名不能衝突,使用Symbol就能很好的保證這一點,Symbol與任何值都不相等!這個東西瞭解不深,傳送門-ES6標準入門-Symobl數組

  4. JavaScript中的變量具體儲存形式
    變量的儲存方式取決於變量的類型是基本類型仍是引用類型安全

    • 基本類型:以鍵值對的方式儲存在棧內存中
    • 複雜類型:會在堆內存中開闢一塊空間,儲存這個對象的值,並同時在棧內存中儲存變量和指向對象的指針
      來源:《JavaScript高級程序設計》69頁
  5. 基本類型對應的內置對象,以及他們之間的裝箱拆箱操做
    這個說的是基本包裝類型,我也理解不深,直接看《JavaScript高級程序設計》119頁前端工程師

  6. 理解值類型和引用類型
    這個和4同樣,值類型就是基本類型,引用類型就是複雜類型函數

  7. nullundefined的區別
    null表示空對象指針,將null賦值給變量,就表示該變量指向空對象
    undefined表示未定義,聲明一個變量但不初始化,那麼它的值就是undefined
    null主要表示一個變量尚未真正保存對象的時候,它的值就應該爲null,這是意料之中的空,而undefined一般表示意料以外的內容,如未初始化的變量,通常來講咱們不該該顯式的使用undefined
    來源《JavaScript高級程序設計》24頁post

  8. 至少能夠說出三種判斷JavaScript數據類型的方式,以及他們的優缺點,如何準確的判斷數組類型學習

    • typeof操做符,能夠判斷基本數據類型,對於引用數據類型全都返回Object
    • instanceof操做符,obj instanceof Object 檢測Object.prototype是否存在於參數obj的原型鏈上,主要用來判斷變量是不是某個構造函數的實例,可是Object是全部對象的原型,因此在obj instanceof Object中,不管參數obj是數組仍是函數都會返回true
    • constructorprototype對象上的屬性,指向構造函數。根據實例對象尋找屬性的順序,若實例對象上沒有實例屬性或方法時,就去原型鏈上尋找,所以,實例對象也是能使用constructor屬性的,一樣的這個也只能輸出構造函數

    如需判斷基本數據類型,使用typeof,判斷引用類型用instanceofconstructor,實際上全部引用類型都是對象,只不過構造函數不一樣罷了,強行判斷引用類型,要麼只是判斷常見的幾種引用類型好比數組,函數,Date,正則等等,要麼只能輸出構造函數

    準確判斷數組類型使用es5提供的方法Array.isArray(value)
    來源《JavaScript高級程序設計》83頁,一整章

  9. 可能發生隱式類型轉換的場景以及轉換原則,應如何避免或巧妙應用
    隱式轉換通常說的是Boolean的轉換

    • Boolean 場景,變量放在if的判斷語句時,若是變量不是布爾值,那麼就會發生隱式轉換
      • String,非空字符串會轉換成true,空字符串會轉換成false
      • Number, 非0會轉換成true,0會轉換成false
      • Object,任何對象都會轉成true

    固然Numebr也會發生隱式轉換,不過這個通常用不到,也很簡單 來源《JavaScript高級程序設計》26頁

  10. 出現小數精度丟失的緣由,JavaScript能夠存儲的最大數字、最大安全數字,JavaScript處理大數字的方法、避免精度丟失的方法

    • 精度丟失緣由,說是JavaScript使用了IEEE 754規範,二進制儲存十進制的小數時不能完整的表示小數
    • 可以表示的最大數字Number.MAX_VALUE等於1.7976931348623157e+308,最大安全數字Number.MAX_SAFE_INTEGER等於9007199254740991
    • 避免精度丟失
      • 計算小數時,先乘100或1000,變成整數再運算
      • 若是值超出了安全整數,有一個最新提案,BigInt大整數,它能夠表示任意大小的整數,注意只能表示整數,而不受安全整數的限制

    來源ES6標準入門、《JavaScript高級程序設計》29頁

先寫10個吧,太累了,果真,合格不是那麼好達到的,加油吧!!!

github,歡迎issue

相關文章
相關標籤/搜索