啟動調查
JavaScript 的instanceof 運算符,表面上運算符用於驗證物件在類別中的成員資格,對某些文字表現出特殊的行為,使開發人員感到困惑。讓我們深入研究幾個令人困惑的例子:
"foo" instanceof String //=>; false<br>"foo" instanceof Object //=>; false<p>true 布林實例//=> false<br>true instanceof Object //=>; false<br>false instanceof Boolean //=>; false<br>false instanceof Object //=>; false</p><p><br>12.21 instanceof Number //=> false</p>/foo/ instanceof RegExp //=>; true
揭開謎底
揭開謎底
揭開謎底
這話種神秘行為的根源在於JavaScript 中基元和物件之間的根本差異。基元表示基本資料類型,例如字串、數字、布林值和 null。另一方面,物件是從建構子或類別繼承屬性和方法的實例化實體。 將instanceof 與文字一起使用時,關鍵的考慮因素是基元本質上不屬於任何類。相反,它們是具有自己的一組屬性的不同實體。例如,「foo」只是一個字串文字,而不是 String 類別的實例。因此,表達式“foo”instanceof String 傳回 false。
後果和解決方法此怪癖對類型檢查有影響。為了確定原語的類型,開發人員通常使用 typeof 運算子而不是 instanceof。例如,typeof "foo" 產生 "string",確認文字的類型。 結論instanceof 對於文字看似反覆無常的行為源自於與JavaScript 中的原語和物件。雖然一開始這可能看起來違反直覺,但當我們意識到這一根本差異時,它就會變得更容易管理。透過接受這種細緻入微的理解,開發人員可以更有信心地應對 JavaScript 的類型檢查複雜性。以上是為什麼 JavaScript 中 `instanceof` 對文字的行為會出現異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!