96SEO 2026-06-12 19:21 1
JS有多少種數據類型這種問題啊 說起來簡單答起來卻Neng讓初學者頭大 別說你沒被面試官問過 連我這個寫過幾年代碼的老鳥 剛開始也總在「六種還是七種」裡糾結
先拋個結論鎮場—— 按現在ECMAScript標準來說 嚴格意義上JS分八種數據類型 但為什麼總有人說六種七種? 害別急聽我慢慢掰扯

早在上個十年前學JS時
老師總說「數據類型分六種」
具體是啥來着?哦對——
Undefined Null Boolean String Number Object
這六個名字是不是hen眼熟?
當時背得滾瓜爛熟卻從沒想過「為什麼」 直到後來kan規範才發現—— 原來這六種裡面藏著「歷史遺留問題」
比如typeof null會返回object
這件事地球人dou知道是個Bug吧?
當年JS創始人湯姆大叔為了省腦子
用簽號整數存儲類型編碼時把null定義成了0
結果剛好和對象類型的編碼重複瞭
於是這個Bug就一直留到現在……
後來時代發展需求變多啦 舊有的六種開始顯得不太夠用
於是ES6出來時扔瞭個Symbol進來——
這傢伙專門負責解決「對象屬性鍵重名」的問題
咱就是說以前給對象加屬性總擔心蓋掉別人的鍵嗎?
舉個例子啊:
javascript
const obj = { name: '小紅', : 1 };
obj = 999; // 和上面那個Symbo完全不一樣!
因為每個Symboldou是獨一無二的值嘛~
再後來到瞭ES202O年又出來個`Biglnt」 這個geng實用一一解決瞭「數字太大會溢出」 的惱火事兒
誰還沒遇到過這種坑啊?用 Number存一個超長ID或者加密數字Zui後幾位莫名其妙變成亂碼.. .
這時候只要加個'n'就行了:let bigNum=1Z345e98n' ;這樣就萬無一失囉
其實按ECMA標準本質上分兩大類 : 原始類型 和 引用類型
|先說「七種原始類型]一一Zui純粹的值這七個傢伙特點就是「不可變」且「直接存儲值在棧內存裡]
Undefined:變量剛聲明沒賦值時就長這樣兒比如let a ; console.log//undefined .感覺像考卷上沒寫答案被判零分一樣
Null:這傢伙跟 Undefined相反·它表示「我故意讓它空著]·比如let obj=null;//預備裝一個對象但暫時還沒有 .還有一個妙用!把不用 的大對象賦值為nul lNeng幫垃圾回收機geng快清掃內存呢~
Boolean:非黑即白·true或false ·就像問你「吃不吃辣?]答案只有兩種
String:不管是單引號雙引號還是反引號包起來dou是字符串·比如'hello'"world"${name}·記住哦字符串也是不可變 的!就算你想改s='a' ·原來那個s還是不動如山呢
Number:這個不用多說吧?整數小數無理數統統裝進來 ·但注意NaN屬於Number類型哦!還有個臨界值叫MAX SAFE INTEGER超過這個數字就不Neng精確表示瞭~
Symbol:前面提過瞭獨一無二 的標記符·適合當對象屬性鍵或者Zuo私有屬性·畢竟誰也無法創建出相同 的 Symbol 值呀
**Bigi nt]:專門處理大整數 的·只要在數字後面加個'n'就行·再也不怕銀行卡餘額顯示錯誤囉
|然後是唯一 的「引用類型 ]一一Obiect別kan它隻一個名字·但其實囊括瞭JS裡絕大部分複雜東西 :陣列函式日期甚至正則表達式...這些通通dou是 Object 的子類
為什麼叫引用類型呢?因為它們太大啦·棧內存裝不下完整內容 ·只Neng把「指向堆內存地址 的參考值 ]存在棧裡.
舉個經典例子體會一下 :
javascript
let objl={name:'小明'};
let objz=objl;//兩者指向同一塊堆內存
objl.name='小華';console.log//輸出小華 !因為改 的根本不是副本而是原件呀.. .
要是換成原始類型呢?let a=I;let b=a;a=Z ;此時b還是I絲毫不動.. .差別是不是hen大 ?
聊到這兒突然想到好多朋友問過我 :明明寫瞭JS基礎教程怎麼百度就是不收錄 ?
害哥們兒掏心窩子說話啊 — —
你的內容是不是太陳舊瞭 ?比如還在堅持說「只有六種數據類型漏瞭Symbo l和Bigi nt ] ·現在搜索引擎dou愛新鮮貨好嗎 ?
然後呢?是不是光列定義沒幹貨 ?大家點進來想學點真東西結果kan見一堆車轍式文字 : Undefined就是未定義.Null就是空...這種誰不會查辭典啊 !
Zui後關鍵詞佈局對不對 ?題目寫著《JS數據類型深度解析》結果內容全是typeof用法 ·連Symbo l場景dou沒講 ..搜索引擎可不傻 ·分分鐘判定你文不符題 !
咱就是說寫技術文要學會「戳痛點 ] — —比如告訴讀者「搞不懂Nu ll和Undefine d區別會導致後端接口報錯!''不會用Symbo l會讓組件屬性衝突!'這樣讀者才會買賬·連帶你的文章也Neng順順溜溜上排名呀 !
聊到這邊相信大家Yi經大概清楚八種類型怎麼回事兒瞭 不過再補充幾個常被忽略卻超級重要 的點 ·保證讓你面試加分 :
①typeof檢測不全 :前面說過typeof nu ll返回ob ject丶typeof function返回function丶typeof array返回ob ject...這些特例要是答不上來輕輕鬆鬆被刷掉!
②instanceof才檢測引用類型 :比如 instanceof Array//true丶{} instanceof Obiect//true ·但對原始類型無效哦
③三級等號vs雙等號 :==會隱式轉換丶===嚴格相等 .比如nu ll==
一一別再死記硬背啦 !
其實不用糾結到底幾種數據類型 核心要理解兩點即可 :
一是什麼東西該用什麼類型裝 — —比圖片路徑用St ring丶超大號用Bigi nt丶開關狀態用Boole an ;
二是不同類型在內存中的行為差異 — —原始類型直接賦值不改原值丶引用類型賦值改共享原值 .. .
至於那些具體名字?耳熟Neng詳就行 畢竟寫代碼不是考試・Neng用對比背得出geng重要嘛 !
哎對瞭剛才好像忘了提一件事 — —有人堅持認為Obiect不算一種獨立類刑反而把它下面嘅陣列函式單獨列出.. .這種想法大錯特錯呀!陣列本質上就是特殊嘅Obiect而Yi嘛 !)裡面明明有proto指向Array.prototype呢 )
好了好了今天嘅扯淡時間就到這兒啦 ~下次再跟你們聊JS裏那些奇奇怪怪嘅隱式轉換坑 .. .記得點贊關注哦不然以後找不到咯!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback