1.JS中使用typeof能夠獲得哪些類型正則表達式
number、string、boolean、undefined、object、function數組
2.什麼時候使用===,什麼時候使用==函數
通常除了obj.a == null裏建議用==(不然須要寫obj.a === null || obj.a === undefined,節約代碼量,jQuery原碼這麼寫的),其餘建議用===spa
3.JS中的內置函數有哪些prototype
這裏指的是ECMAScript中的函數,包括Object、Array、Function、Boolean、Number、String、Date、RegExp、Error對象
4.JS變量按照存儲方式分爲哪些類型,描述其特色ip
基本類型和引用類型內存
基本類型中的每一個值都放在內存中(棧內存),複製時複製的爲值開發
引用類型中的每一個值放在堆內存中,變量中保存的只是這個值的一個地址,複製的時候複製的爲地址字符串
5.如何理解JSON
JSON也是JS中的一個內置對象,只不過其書寫上的格式比較嚴格,有兩個API:stringify(對象->字符串)和parse(字符串->對象)
但另外一方面來講,JSON也是一個數據格式
基本類型有string、number、boolean、undefined和null,保存在棧內存中
用變量來給另外一個變量賦值時,變量獲得的是值,所以兩個變量值發生變化時,另外一個變量的值不變
而引用類型有array、object、function,保存在堆內存中
用變量給另外一個變量賦值時,實際上獲得的是這個引用類型的一個地址,所以當其中一個變量值發生變化時,另外一個變量的值也變化
能夠理解成基本類型的值(數據量)小,直接放在內存中比較好,而引用類型數據量大,放在內存中不利於內存的使用,節約內存空間
對象、數組、正則表達式、null返回object,函數返回function,數字返回number,字符串返回string,布爾值返回boolean,undefined返回undefined
因此對於基本類型,typeof區分比較好,可是對於引用類型,用instanceof比較好(是否爲某個的實例)
instanceof實際上判斷的是數據對象是否爲某個數據類型構造函數的實例,若是用'123' instanceof String,返回的也是false
這裏能夠用Object原型上的toString方法來判斷,也就是Object.prototype.toString.call(),輸出的是一個數組,內容爲Object 數據類型,全部的數據類型在判斷的時候都沒有問題
ES6中新增了Symbol類型,用typeof返回symbol
這裏的symbol類型每次都生成一個不同的獨立的值,也就是用===符號判斷兩個Symbol類型是永遠不可能相等的
能夠在構造Symbol實例的時候向其中傳入一個字符串,查看該值的時候會以symbol(字符串)的形式返回,有利於咱們區分不一樣的Symbol類型
能夠用在對象中,以防止對象的鍵值對被修改,但實際開發中還幾乎沒有用symbol類型的
發生在如下幾種狀況中
其中會被強制轉換成false的有:0、NaN、"、undefined、null、false自己
JSON也是JS中的一個內置對象(注意和內置函數區別,Math也是一個內置對象,內置函數是能夠用new關鍵詞構造實例的),只不過其書寫上的格式比較嚴格
JSON有兩個API:stringify(對象->字符串)和parse(字符串->對象)
但另外一方面來講,JSON也是一個數據格式