摘要:它并沒有為整數給出一種特定的類型。例如,使用一個分隔符,一個可以模仿一個列表一個的數組可能更適合一些。不幸的是,當一個分隔符在用于列表中的元素時,打亂了這個列表。
JS常用數據類型
編程語言都具有內建的數據結構,但各種編程語言的數據結構常有不同之處。本文試圖列出 JavaScript 語言中內建的數據結構及其屬性,它們可以用來構建其他的數據結構;同時盡可能的描述與其他語言的不同之處。
1.動態類型JavaScript 是一種弱類型或者說動態語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。這也意味著你可以使用同一個變量保存不同類型的數據:
var foo = 42; // foo is a Number now foo = "bar"; // foo is a String now foo = true; // foo is a Boolean now
動態類型語言特點是靈活,缺點是犧牲了部分性能。對于動態類型語言,變量類型是可以動態改變的,無法在編譯期確定,因此編譯期的類型檢查比較弱,這將導致很多類型錯誤直到運行期才能發現。
2.數據類型最新的 ECMAScript 標準定義了 7 種數據類型:
6 種原始類型:
Boolean Null Undefined Number String Symbol (ECMAScript 6 新定義)
Object
3.原始值( primitive values )除 Object 以外的所有類型都是不可變的(值本身無法被改變)。例如,與 C 語言不同,JavaScript 中字符串是不可變的(譯注:如,JavaScript 中對字符串的操作一定返回了一個新字符串,原始字符串并沒有被改變)。我們稱這些類型的值為“原始值”。
布爾類型(Boolean)
布爾表示一個邏輯實體,可以有兩個值:true 和 false。
Null 類型
Null 類型只有一個值: null,更多詳情可查看 null 和 Null 。
Undefined 類型
一個沒有被賦值的變量會有個默認值 undefined,更多詳情可查看 undefined 和 Undefined。
數字類型
根據 ECMAScript 標準,JavaScript 中只有一種數字類型:基于 IEEE 754 標準的雙精度 64 位二進制格式的值(-(263 -1) 到 263 -1)。它并沒有為整數給出一種特定的類型。除了能夠表示浮點數外,還有一些帶符號的值:+Infinity,-Infinity 和 NaN (非數值,Not-a-Number)。
要檢查值是否大于或小于 +/-Infinity,你可以使用常量 Number.MAX_VALUE 和 Number.MIN_VALUE。另外在 ECMAScript 6 中,你也可以通過 Number.isSafeInteger() 方法還有 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 來檢查值是否在雙精度浮點數的取值范圍內。 超出這個范圍,JavaScript 中的數字不再安全了,也就是只有 second mathematical interger 可以在 JavaScript 數字類型中正確表現。
數字類型只有一個整數,它有兩種表示方法: 0 可表示為 -0 和 +0("0" 是 +0 的簡寫)。 在實踐中,這也幾乎沒有影響。 例如 +0 === -0 為真。 但是,你可能要注意除以0的時候:
42 / +0; // Infinity 42 / -0; // -Infinity
字符串類型
JavaScript的字符串類型用于表示文本數據。它是一組16位的無符號整數值的“元素”。在字符串中的每個元素占據了字符串的位置。第一個元素的索引為0,下一個是索引1,依此類推。字符串的長度是它的元素的數量。
不同于類 C 語言,JavaScript 字符串是不可更改的。這意味著字符串一旦被創建,就不能被修改。但是,可以基于對原始字符串的操作來創建新的字符串。例如:
獲取一個字符串的子串可通過選擇個別字母或者使用 String.substr().
兩個字符串的連接使用連接操作符 (+) 或者 String.concat().
注意代碼中的“字符串類型”!
可以使用字符串來表達復雜的數據。以下是一些很好的性質:
容易連接構造復雜的字串符
字符串容易被調試(你看到的往往在字符串里)
字符串通常是許多APIs的常見標準 (input fields, local storage values, XMLHttpRequest當使用responseText等的時候回應) 而且他只能與字符串一同使用。
按照慣例, 字符串一般可以用來表達任何數據結構。這不是一個好主意。例如,使用一個分隔符,一個可以模仿一個列表(一個JavaScript的數組可能更適合一些) 。不幸的是,當一個分隔符在用于列表中的元素時,打亂了這個列表。 一個轉義字符等。所有這些慣例都變成了一個不存在的維護負擔而沒有正確的工具使用。
表達文本數據和符號數據時候推薦使用字符串。當表達復雜的數據時,使用字符串解析和適當的縮寫。
符號類型
符號(Symbols)是ECMAScript 第6版新定義的。符號類型是唯一的并且是不可修改的, 并且也可以用來作為Object的key的值(如下). 在某些語言當中也有類似的原子類型(Atoms). 你也可以認為為它們是C里面的枚舉類型. 更多細節請看 Symbol 和 Symbol 。
對象Object在 Javascript 里,對象可以被看作是一組屬性的集合。用對象字面量語法來定義一個對象時,會自動初始化一組屬性。(也就是說,你定義一個var a = "Hello",那么a本身就會有a.substring這個方法,以及a.length這個屬性,以及其它;如果你定義了一個對象,var a = {},那么a就會自動有a.hasOwnProperty及a.constructor等屬性和方法。)而后,這些屬性還可以被增減。屬性的值可以是任意類型,包括具有復雜數據結構的對象。屬性使用鍵來標識,它的鍵值可以是一個字符串或者符號值(Symbol)。
ECMAScript定義的對象中有兩種屬性:數據屬性和訪問器屬性。
數據屬性
數據屬性是鍵值對,并且每個數據屬性擁有下列特性:
數據屬性的特性(Attributes of a data property)
O(∩_∩)O哈哈~基礎還是很重要的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102634.html
摘要:平時在復習基礎知識時,經常會遇到數據類型基礎數據類型內置對象包裝類型對象,檢測數據類型時,用到的值,感覺都差不多,但是又有差異。值與數據類型關系對比下圖,即可知值相較于基礎數據類型少多 平時在復習JS基礎知識時,經常會遇到JS數據類型、基礎數據類型、內置對象、包裝類型對象,檢測數據類型時,用到的typeof值,感覺都差不多,但是又有差異。今天特地整理下,方便理解。 JS數據類型 基礎數...
摘要:相當于相當于相當于基礎類型不屬于包裝的對象類型小結數據類型是每一個語言的基礎由于屬于弱類型腳本語言因此數據只有在賦值后才能直到變量的數據類型下一次我們具體介紹對象的概念 前言 在《你所不知道的javascript上篇》書籍 以及《javascript權威指南》等書籍里面, 均有介紹js的數據類型,對象,原型,繼承。結合工作經驗, 以及借用一些開源庫和框架的源碼, 進行一次梳理。 首先介...
摘要:其他字符可以是字母下劃線美元符號或數字。在使用聲明變量,但沒有對其初始化時,這個變量的值就是。從邏輯上思考,他們的值,一個是,一個報錯他們的類型,卻都是。這時,可以采用變量的類型進行比較。類型有兩個值字面量和。 javascript 數據類型 javascript由于nodejs的出現將觸角延伸至各個開發領域, 也由于 ES6等后續版本的推出對程序員越來越友好, 收到程序員的強烈推崇,...
摘要:介紹編程數據結構,算法,內存分配表單驗證需要一門語言可以直接運行在瀏覽器中,來完成表單驗證的功能。 Javascript介紹編程(數據結構,算法,內存分配)表單驗證 需要一門語言可以直接運行在瀏覽器中,來完成表單驗證的功能。 瀏覽器廠商 網景 firefox js 標準 js解釋器 IE js js解釋器 google js j...
摘要:舉個例子在上面的例子可以看到,我們聲明是一個數字,但是我們在之后將的值又改成了字符串和布爾值后面會講這些類型。基本類型字符串表示一個字符串,如。因此,我們可以寫一個函數,用來精確檢測類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數據類型? 數據類型,就是將...
摘要:數據結構類型擴展相對之類的強類型語言,有一點很大的區別就是,數據結構只有與,并且都是動態可變的,而有等數據結構。所以,為了能在中也使用這些數據結構,就應運而生。擴充了中的不可變集合,即一旦創建就不能改變的數據類型。 js 數據結構類型擴展:immutable-js 相對 java、.net 之類的強類型語言,js 有一點很大的區別就是,數據結構只有 array 與 object,并且都...
閱讀 3078·2021-11-24 09:38
閱讀 1330·2021-09-22 15:27
閱讀 2968·2021-09-10 10:51
閱讀 1504·2021-09-09 09:33
閱讀 917·2021-08-09 13:47
閱讀 2072·2019-08-30 13:05
閱讀 892·2019-08-29 15:15
閱讀 2425·2019-08-29 12:21