基本類型:null、undefined、boolean、number、string、symbol
對象(Object):引用類型(也稱為復雜類型)
注意: NaN 也屬于 number 類型,并且 NaN 不等于自身。
NaN(Not a Number,非數字)是計算機科學中數值數據類型的一類值,表示未定義或不可表示的值。
雖然 NaN 是“Not a Number”,但是它的類型還是數值類型
console.log(typeof NaN === "number"); ?//true
NaN 和任何東西都不相等——甚至是它自己本身!
console.log(NaN === NaN); ?//false
undefined是undefined類型。表示"缺少值",就是此處應該有一個值,但是還沒有定義
(1)作為函數的參數,表示該函數的參數不是對象。
(2)作為對象原型鏈的終點。
null是object類型,代表“空值”,代表一個空對象指針
(1)變量被聲明了,但沒有賦值時,就等于undefined。
(2)調用函數時,應該提供的參數沒有提供,該參數等于undefined。
(3)對象沒有賦值的屬性,該屬性的值為undefined。
(4)函數沒有返回值時或者return后面什么也沒有,返回undefined。
在一個對象上觸發某類事件(比如單擊onclick事件),如果此對象定義了此事件的處理程序,那么此事件就會調用這個處理程序,如果沒有定義此事 件處理程序或者事件返回true,那么這個事件會向這個對象的父級對象傳播,從里到外,直至它被處理(父級對象所有同類事件都將被激活),或者它到達了對 象層次的最頂層,即document對象(有些瀏覽器是window)。
打個比方說:你在地方法院要上訴一件案子,如果地方沒有處理此類案件的法院,地方相關部門會幫你繼續往上級法院上訴,比如從市級到省級,直至到中央法院,最終使你的案件得以處理。
同步會阻塞,異步不會阻塞
同步:程序運行從上而下,瀏覽器必須把這個任務執行完畢,才能繼續執行下一個任務
異步:程序運行從上而下,瀏覽器任務沒有執行完,但是可以繼續執行下一行代碼,當被調用者得到結果之后會通過回調函數主動通知調用者。
前者是切割成數組的形式,后者是將數組轉換成字符串;
"=="會自動轉換類型,因此直接判斷兩邊的值
"==="先判斷左右兩邊的數據類型,然后再判斷兩邊的值
原型鏈繼承,借用構造函數繼承,組合繼承,寄生式繼承,寄生組合繼承
如果說放在body的封閉之前,將會阻塞其他資源的加載;
如果放在body封閉之后,不會影響body內元素的加載;
document.write 只能重繪整個頁面;
innerHTML 可以重繪頁面的一部分;
閉包就是能夠讀取其他函數內部變量的函數。
閉包的缺點:濫用閉包函數會造成內存泄露,因為閉包中引用到的包裹函數中定義的變量都永遠不會被釋放,所以我們應該在必要的時候,及時釋放這個閉包函數。