摘要:字符串類型的字符串類型用于表示文本數據。例如,使用一個分隔符,一個可以模仿一個列表一個的數組可能更適合一些。不幸的是,當一個分隔符在用于列表中的元素時,打亂了這個列表。屬性的值可以是任意類型,包括具有復雜數據結構的對象。
編程語言都具有內建的數據結構,但各種編程語言的數據結構常有不同之處。本文試圖列出 JavaScript 語言中內建的數據結構及其屬性,它們可以用來構建其他的數據結構;同時盡可能的描述與其他語言的不同之處。
動態類型JavaScript 是一種弱類型或者說動態語言。這意味著你不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。這也意味著你可以使用同一個變量保存不同類型的數據:
var foo = 42; // foo is a Number now foo = "bar"; // foo is a String now foo = true; // foo is a Boolean now
注:TypeScript編譯語言針對此問題做了改進;
數據類型最新的 ECMAScript 標準定義了 7 種數據類型:
6 種原始類型:
Boolean
Null
Undefined
Number
String
Symbol (ECMAScript 6 新定義)
和 Object
原始值(primitive values)除 Object 以外的所有類型都是不可變的(值本身無法被改變)。例如,與 C 語言不同JavaScript中字符串是不可變的(譯注:如,JavaScript中對字符串的操作一定返回了一個新字符串,原始字符串并沒有被改變)。我們稱這些類型的值為“原始值”。
布爾類型(boolean)
布爾表示一個邏輯實體,可以有兩個值:true 和 false。
Null類型
Null 類型只有一個值: null。值 null 特指對象的值未設置。值 null 是一個字面量,它不像undefined 是全局對象的一個屬性。null 是表示缺少的標識,指示變量未指向任何對象。把 null 作為尚未創建的對象,也許更好理解。在 APIs 中,null 常在返回類型是對象,但沒關聯值的地方使用。
Undefined類型
一個沒有被賦值的變量會有個默認值 undefined,undefined是全局對象的一個屬性。也就是說,它是全局作用域的一個變量。
數字類型
根據 ECMAScript 標準,JavaScript 中只有一種數字類型:基于 IEEE 754 標準的雙精度 64 位二進制格式的值(-(263 -1) 到 263 -1)。它并沒有為整數給出一種特定的類型。除了能夠表示浮點數外,還有一些帶符號的值:+Infinity,-Infinity 和 NaN (非數值,Not-a-Number)。
字符串類型
JavaScript的字符串類型用于表示文本數據。它是一組16位的無符號整數值的“元素”。在字符串中的每個元素占據了字符串的位置。第一個元素的索引為0,下一個是索引1,依此類推。字符串的長度是它的元素的數量。
JavaScript 字符串是不可更改的。這意味著字符串一旦被創建,就不能被修改。但是,可以基于對原始字符串的操作來創建新的字符串。例如:
獲取一個字符串的子串可通過選擇個別字母或者使用 String.substr().
兩個字符串的連接使用連接操作符 (+) 或者 String.concat().
可以使用字符串來表達復雜的數據。以下是一些很好的性質:
容易連接構造復雜的字串符
字符串容易被調試(你看到的往往在字符串里)
字符串通常是許多APIs的常見標準 (input fields, local storage values, XMLHttpRequest當使用responseText等的時候回應) 而且他只能與字符串一同使用。
按照慣例, 字符串一般可以用來表達任何數據結構。這不是一個好主意。例如,使用一個分隔符,一個可以模仿一個列表(一個JavaScript的數組可能更適合一些) 。不幸的是,當一個分隔符在用于列表中的元素時,打亂了這個列表。 一個轉義字符等。所有這些慣例都變成了一個不存在的維護負擔而沒有正確的工具使用。
表達文本數據和符號數據時候推薦使用字符串。當表達復雜的數據時,使用字符串解析和適當的縮寫。
符號類型
符號(Symbols)是ECMAScript 第6版新定義的。符號類型是唯一的并且是不可修改的, 并且也可以用來作為Object的key的值(如下). 在某些語言當中也有類似的原子類型(Atoms). 你也可以認為為它們是C里面的枚舉類型.
Symbol()函數會返回symbol類型的值,該類型具有靜態屬性和靜態方法。它的靜態屬性會暴露幾個內建的成員對象;它的靜態方法會暴露全局的symbol注冊,且類似于內建對象類,但作為構造函數來說它并不完整,因為它不支持語法:"new Symbol()"。每個從Symbol()返回的symbol值都是唯一的。
const symbol1 = Symbol(); const symbol2 = Symbol(42); const symbol3 = Symbol("foo"); console.log(typeof symbol1); // expected output: "symbol" console.log(symbol3.toString()); // expected output: "Symbol(foo)" console.log(Symbol("foo") === Symbol("foo")); // expected output: false對象
在計算機科學中, 對象是指內存中的可以被 標識符引用的一塊區域.
屬性
在 Javascript 里,對象可以被看作是一組屬性的集合。用對象字面量語法來定義一個對象時,會自動初始化一組屬性。(也就是說,你定義一個var a = "Hello",那么a本身就會有a.substring這個方法,以及a.length這個屬性,以及其它;如果你定義了一個對象,var a = {},那么a就會自動有a.hasOwnProperty及a.constructor等屬性和方法。)而后,這些屬性還可以被增減。屬性的值可以是任意類型,包括具有復雜數據結構的對象。屬性使用鍵來標識,它的鍵值可以是一個字符串或者符號值(Symbol)。
ECMAScript定義的對象中有兩種屬性:數據屬性和訪問器屬性。
數據屬性
數據屬性是鍵值對,并且每個數據屬性擁有下列特性:
訪問性屬性
訪問器屬性有一個或兩個訪問器函數 (get 和 set) 來存取數值,并且有以下特性:
"標準的" 對象, 和函數節
一個 Javascript 對象就是鍵和值之間的映射。鍵是一個字符串(或者 Symbol) ,值可以是任意類型的值。 這使得對象非常符合哈希表。
函數是一個附帶可被調用功能的常規對象。
日期
當你想要顯示日期時,毋庸置疑,使用內建的 Date 對象。
有序集: 數組和類型數組
數組是一種使用整數作為鍵(integer-key-ed)屬性和長度(length)屬性之間關聯的常規對象。此外,數組對象還繼承了 Array.prototype 的一些操作數組的便捷方法。例如, indexOf (搜索數組中的一個值) or push (向數組中添加一個元素),等等。 這使得數組是表示列表或集合的最優選擇。
類型數組(Typed Arrays)是ECMAScript Edition 6中新定義的 JavaScript 內建對象,提供了一個基本的二進制數據緩沖區的類數組視圖。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102731.html
摘要:以和為例,說明中的數字數據如何轉換為二進制數據。對象用來表示通用的固定長度的原始二進制數據緩沖區。中的數字數據如何轉換為二進制數據對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數據操作的。 概述 本文主要通過對JavaScript中數字數據與二進制數據之間的轉換,讓讀者能夠了解在JavaScript中如何對數字類型(包括但不限于Number類型)進行處理。 二進制數據在日常...
摘要:變量與常量變量定義變量是存儲數據信息的容器。中,變量是弱類型,也被稱為松散類型。三類型布爾類型只有兩個值均為小寫如果大寫活著大小寫混合,識別為另一個變量名稱。 JavaScript簡介 JavaScript是一門跨平臺、面向對象的輕量級腳本語言,運行于JavaScript解釋器或者引擎中。JavaScript中,包括三個主要的部分1.核心語法內容(ECMAScript)2.文檔對象模型...
摘要:中變量可能包含兩種不同的數據類型的值基本類型和引用類型。本文主要介紹基本數據類型及其特點。操作符在介紹基本類型值之前,先說下操作符,操作符會返回數據類型的字符串表示。所有未初始化的變量均會保存該值。 前言JavaScript中的變量為松散類型,所謂松散類型就是指當一個變量被申明出來就可以保存任意類型的值,就是不像SQL一樣申明某個鍵值為int就只能保存整型數值,申明varchar只能保...
摘要:一棧數據結構與不同,中并沒有嚴格意義上區分棧內存與堆內存。引用數據類型的值是保存在堆內存中的對象。不允許直接訪問堆內存中的位置,因此我們不能直接操作對象的堆內存空間。為了更好的搞懂變量對象與堆內存,我們可以結合以下例子與圖解進行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...
摘要:在中,并沒有對抽象類和接口的支持。例如,當對象需要對象的能力時,可以有選擇地把對象的構造器的原型指向對象,從而達到繼承的效果。本節內容為設計模式與開發實踐第一章筆記。 動態類型語言 編程語言按數據類型大體可以分為兩類:靜態類型語言與動態類型語言。 靜態類型語言在編譯時已確定變量類型,動態類型語言的變量類型要到程序運行時,待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...
閱讀 2645·2021-09-13 10:26
閱讀 1907·2021-09-03 10:28
閱讀 1977·2019-08-30 15:44
閱讀 794·2019-08-29 14:07
閱讀 385·2019-08-29 13:12
閱讀 2143·2019-08-26 11:44
閱讀 2336·2019-08-26 11:36
閱讀 2003·2019-08-26 10:19