JavaScript中“基本類型”之爭(zhēng)小結(jié)
前端面試中常被問到的問題之一就是“JavaScript的基本類型有幾種?”。
有的回答“數(shù)字、字符串、布爾”,有的可能會(huì)再加上“Null、Undefined”。而有人可能認(rèn)為“object”也是基本類型。到底是什么樣呢?
所謂“基本類型(primitive types)”的概念ECMAScript(V3,V5)中壓根就沒有,它只是將類型分為6種。
ECMAScript只提到類型,用types表示,在V3,V5整個(gè)文檔搜關(guān)鍵字“primitive”也沒見“primitive type”,“primitive value”倒是有,如true/false/0-9等。這說明規(guī)范壓根就沒有所謂的“基本類型”、“原始類型”一說(primitive types)。如果非要說有那么object明顯也是,即有6種基本類型。
一些書籍卻經(jīng)常使用這個(gè)概念,如《JavaScript高級(jí)程序設(shè)計(jì)》第一版、第二版,第三版。
第一版提到有5種原始類型,即Undefined、Null、Boolean、Number、String
第二版和第三版又搞出了個(gè)simple data type,翻譯為簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型),稱對(duì)象為復(fù)雜數(shù)據(jù)類型。
另一本經(jīng)典書《JavaScript權(quán)威指南(第6版)》第3章也提到了primitive types
先分為基本類型(primitive types)和對(duì)象類型,基本類型又分為數(shù)字,字符串,布爾,及兩個(gè)特殊null,undefined。
5年前JavaScript方面的書籍還很少,這兩本書就是其中之二,影響也很大,可謂經(jīng)典。因此受此影響的JSer不乏少數(shù)。我想書作者把語言類型分為基本類型(元類型)和對(duì)象類型(復(fù)雜類型)也是符合學(xué)習(xí)邏輯的,復(fù)雜類型由簡單類型組合而成。另外也是受到其它語言如Java的影響,它們也是把類型分為基本類型(8種)和對(duì)象類型。
但ECMAScript中沒有所謂的primitive types,就好比它沒有類(class)的概念一樣(具有其它語言能力的人仍然喜歡在JavaScript使用名詞“類”)。它里面提到的就是類型,可以把它理解成基本類型,但也應(yīng)該是6種。這里的基本類型也不是Java中的基本類型,因?yàn)樗藦?fù)雜數(shù)據(jù)類型-對(duì)象。
不是所有的書都認(rèn)為JavaScript中基本類型只有5種(不包括對(duì)象),《JavaScript語言精髓與編程實(shí)踐》認(rèn)為是6種,如下
它沒有將null歸為其中,卻增加了function類型。 噢,千奇百怪的答案都有,下次再有人問這個(gè)問題如何作答呢?
相關(guān)文章
BootStrap Table 分頁后重新搜索問題的解決辦法
這篇文章主要介紹了BootStrap Table 分頁后重新搜索問題的解決辦法,自定義搜索且有分頁功能,比如搜索產(chǎn)品名的功能。小編給大家?guī)砹岁P(guān)鍵代碼,非常不錯(cuò),需要的朋友可以參考下2016-08-08javascript實(shí)現(xiàn)簡單的頁面右下角提示信息框
本文給大家分享的是使用javascript實(shí)現(xiàn)簡單的頁面右下角提示信息框的方法和示例代碼,有需要的小伙伴可以參考下。2015-07-07js為鼠標(biāo)添加右擊事件防止默認(rèn)的右擊菜單彈出
本文為大家介紹下如何為使用js為鼠標(biāo)添加右擊事件防止默認(rèn)的右擊菜單彈出,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-07-07如何寫一個(gè)通用的JavaScript效果庫!(1/2)
如何寫一個(gè)通用的JavaScript效果庫!(1/2)...2007-04-04JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order fun
這篇文章主要介紹了JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order functions),結(jié)合實(shí)例形式分析了javascript函數(shù)式編程高級(jí)函數(shù)的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-05-05如何使用ES6的class類繼承來實(shí)現(xiàn)絢麗小球效果
JS是由ES(ECMAScript)、DOM(瀏覽器文檔對(duì)象)、BOM(瀏覽器對(duì)象模型)組成,這篇文章主要給大家介紹了關(guān)于如何使用ES6的class類繼承來實(shí)現(xiàn)絢麗小球效果的相關(guān)資料,需要的朋友可以參考下2021-06-06js判斷鼠標(biāo)位置是否在某個(gè)div中的方法
這篇文章主要介紹了js判斷鼠標(biāo)位置是否在某個(gè)div中的方法,涉及JavaScript針對(duì)鼠標(biāo)事件的響應(yīng)及頁面元素屬性操作相關(guān)技巧,需要的朋友可以參考下2016-02-02IScroll那些事_當(dāng)內(nèi)容不足時(shí)下拉刷新的解決方法
下面小編就為大家?guī)硪黄狪Scroll那些事_當(dāng)內(nèi)容不足時(shí)下拉刷新的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07