首頁 >web前端 >js教程 >JavaScript中「基本型別」之爭小結_javascript技巧

JavaScript中「基本型別」之爭小結_javascript技巧

WBOY
WBOY原創
2016-05-16 17:44:32983瀏覽

前端面試中常被問到的問題之一就是「JavaScript的基本型別有幾種?」。

有的回答“數字、字串、布林”,有的可能會再加上“Null、Undefined”。而有人可能認為「object」也是基本型。到底是什麼樣子呢?

所謂「基本型態(primitive types)」的概念ECMAScript(V3,V5)中壓根就沒有,它只是將型別分為6種。

ECMAScript只提到類型,用types表示,在V3,V5整個文檔搜關鍵字“primitive”也沒見“primitive type”,“primitive value”倒是有,如true/false/0-9等。這說明規範壓根就沒有所謂的「基本型別」、「原始型別」一說(primitive types)。如果非要說有那麼object明顯也是,也就是有6種基本型別。

有些書籍卻常使用這個概念,如《JavaScript高級程式設計》第一版、第二版,第三版。

第一版提到有5種原始型,分別是Undefined、Null、Boolean、Number、String

第二版和第三版又搞出了個simple data type,翻譯為簡單資料型別(也稱為基本資料型別),稱物件為複雜資料型別。

另一本經典書《JavaScript權威指南(第6版)》第3章也提到了primitive types

先分為基本類型(primitive types)和物件類型,基本類型又分為數字,字串,布爾,及兩個特殊null,undefined。

5年前JavaScript的書還很少,這兩本書就是其中之二,影響也很大,可謂經典。因此受此影響的JSer不乏少數。我想書作者把語言類型分為基本類型(元類型)和物件類型(複雜類型)也是符合學習邏輯的,複雜類型由簡單類型組合而成。另外也是受到其它語言如Java的影響,它們也是把型別分為基本型別(8種)和物件型別。

但ECMAScript中沒有所謂的primitive types,就好比它沒有類(class)的概念一樣(具有其它語言能力的人仍然喜歡在JavaScript使用名詞「類」)。它裡面提到的就是類型,可以把它理解成基本類型,但也應該是6種。這裡的基本類型也不是Java中的基本類型,因為它包含了複雜資料類型-物件。

不是所有的書都認為JavaScript中基本類型只有5種(不包括物件),《JavaScript語言精髓與程式設計實踐》認為是6種,如下

它沒有將null歸為其中,卻增加了function類型。 噢,千奇百怪的答案都有,下次再有人問這個問題如何作答呢?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn