{}是一個不完全空的對象,因為他的原型鏈上還有Object呢,而null就是完全空的對象,啥也沒有,原型鏈也沒有,所以null instanceof Object === false;[]就更不用說了,它的原型鏈上還比{}多一個Array。
所以,純粹意義上初始化一個空對象應該用null,{}更像是初始化對象,和new一個沒有key的Obejct是一樣的。
還有就是空數組轉換成布爾類型返回的是true:
因為數組(不管是不是空的)屬於對象類型,對象類型轉為boolean類型(內部對應ToBoolean()操作
)時都是true。所以判斷數組一般使用的是判斷數組的長度。