理解矛盾:為什麼帶有物件的typeof 陣列會傳回「Object」
開發者可能會遇到一個令人驚訝的現象:在數組上呼叫typeof 時包含對象,它莫名其妙地返回“對象”而不是“數組”。本文深入探討了這種看似矛盾的行為。
透過一個例子來說明這個問題:
$.ajax({
url: 'http://api.twitter.com/1/statuses/user_timeline.json',
data: { screen_name: 'mick__romney'},
dataType: 'jsonp',
success: function(data) {
console.dir(data); //Array[20]
alert(typeof data); //Object
}
});
雖然 console.dir(data) 正確地將變數識別為數組,但 typeof data 不協調地傳回「Object」。
解釋在於 JavaScript 的特殊規範,其中 typeof 運算子傳回物件內部 [[Class]] 屬性的型別。對於數組,它們的 [[Class]] 屬性設定為“Array”,但當被物件包圍時,[[Class]] 屬性變更為“Object”。
確保準確的類型檢查,開發人員可以採用多種方法:
透過理解這種特性並利用這些技術,開發人員可以有效地處理陣列JavaScript 程式碼中的物件。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3