JSON 和JavaScript 介紹與區別

Web 開發依賴于 JavaScript,但什么是 JSON,以及 JSON 與 JavaScript 的區別是什么?了解WEB背后的技術對于尋求創新和充分利用可用資源的團隊來說非常重要。所有與WEB相關的東西都將使用 JavaScript。但是,JSON 更加細微,可能需要也可能不需要使用它。
JSON 和 JavaScript
在開始比較 JSON 與 JavaScript 之前,需要了解 JSON 是什么以及它與 JavaScript 的關系。來回顧一下 JavaScript 和 JSON 是什么,然后比較和對比它們,看看它們的區別是什么。
什么是 JavaScript?
JavaScript 與 HTML 和 CSS 一樣,是萬維網的核心技術之一。 JavaScript 開始是為了使網頁栩栩如生。沒有它,現代網頁設計將是靜態和無聊的。 JavaScript 是一種編程語言。它可能是最重要的編程語言,因為 Web 開發的各個方面都建立在它之上,未來其比重也將越來越重。本文不會花很多時間詳細說明 JavaScript 是什么。
什么是 JSON
JSON 是 JavaScript Object Notation 的縮寫。 JSON JavaScript 也是如此嗎?不完全是。 JSON 是一種獨立于任何編程語言的數據格式,源自于 JavaScript。大部分現代編程語言都包含可以生成和解析 JSON 數據的方法。
關于 JSON 的幾點說明:
- 它是一種用于存儲和傳輸數據的輕量級格式
- 語法是自描述的,便于人類閱讀和理解
- 通常,當數據從服務器發送到網頁時使用 JSON,作為API的傳輸數據格式
JSON 數據以兩種基本方式構造:key/value 對或此類對的集合,或有序列表。JSON 允許存儲或傳輸六種不同類型的數據,包括:
ArrayNullBooleanStringNumberObject
如上所述,JavaScript 和 JSON 是兩個完全不同的東西。雖然 JSON 是從 JavaScript 派生的,但兩者在很多方面沒有可比性。但是,可以將 JSON 與 JavaScript 對象進行比較,這兩者關系更密切,在前端開發中也是經常接觸的。
什么是 JavaScript 對象?
JavaScript 對象也用于存儲數據,所有 JavaScript 值實際上都是對象,除了原始數據類型 null、Boolean、 number、 string、 symbol、undefined 。JavaScript 對象可能會變得復雜,因為它們可以包含許多不同的原始數據組合。
JavaScript 對象也以 key/value 對的形式構成,它們可以通過對象構造器語法、對象字面量、構造器和原型鏈創建, JavaScript 對象是可變的。這意味著可以更改 key/value 對中各個鍵的值。
JSON 對比JavaScript 對象
在了解 JSON 和 JavaScript 對象的不同之處之前,重要的是要了解 JSON 和 JavaScript 對象的相似之處遠大于它們的不同之處。JSON 源自 JavaScript 對象文字語法。事實上,最簡單的解釋是 JSON 是 JavaScript 對象文字語法,但有更多限制。
JSON 和 JavaScript 對象都是人類可讀的。它們都為用戶提供了一種結構化數據的方法,并且它們都可以用作另一個來源的來源。當談到差異時,JSON 和 JavaScript 對象在幾個關鍵方面有所不同:
- 語言依賴
- 純文本
String Vs Object
語言依賴
JSON 和 JavaScript 對象之間最大的區別之一是對編程語言的依賴。JavaScript 對象完全依賴于 JavaScript,它們不能與任何其他編程語言一起使用。另一方面,超過 50 種不同的編程語言支持 JSON,包括流行的語言,例如:
- Go
- Ruby
- Perl
- C
- C#
- Python
- PHP
- JavaScript
這種廣泛的支持使 JSON 成為數據存儲和傳輸的靈活選擇。
純文本
JSON 數據只能以文本形式呈現,不能向 JSON 添加注釋或其他代碼行,這種特性是為什么這么多其他編程語言可以生成和解析 JSON 的原因。JavaScript 對象可以包含其他代碼,例如函數和方法。
String Vs Object
JSON 和 JavaScript 對象之間的最后一個主要區別是它們的呈現方式。 JSON 以字符串形式呈現。這些被稱為 JSON 字符串。 JavaScript 對象可以包含字符串,但顧名思義,它們是對象而不是字符串。對象比字符串更復雜。
總結
JSON 和 JavaScript 對象之間的差異是細微的,也是前端開發中經常會用到的兩種類型,特別需要注意的是 JSON 不存在深拷貝淺拷貝的問題,而對象需要考慮這個問題,因此為避免對象深拷貝帶來的問題,通常將對象與JSON相互轉換。