JavaScript 是一種弱類型或者說動態語言。這意味著不用提前聲明變量的類型,在程序運行過程中,類型會被自動確定。這也意味著可以使用同一個變量保存不同類型的數據:
var foo = 42; // foo is a Number now
var foo = "bar"; // foo is a String now
var foo = true; // foo is a Boolean now
最新的JavaScript標準定義了 7 種數據類型,它們分別是:
6種原始類型:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol(在ES6中新定義,本節暫不講解)
- 對象(Object)類型
原始值
在JavaScript中除 Object 以外的所有類型都是不可變的(值本身無法被改變),我們稱這些類型的值為“原始值”。
布爾類型:Boolean
布爾表示一個邏輯實體,意為真、假,可以有兩個值:true和false。
Null類型:null
Null 類型只有一個值:null,表示空值,表示沒有被呈現。
Undefined類型:Undefined
一個沒有被賦值的變量會有個默認值undefined。
數字類型:Number
在JavaScript里,數字類型能夠代表的范圍是(-(2的63次方-1) ~ (2的63次方-1)。除了具體的數值,在JavaScript中還有一些帶符號的值:+Infinity,-Infinity和NaN(非數值,Not-a-Number),分別代表正無窮、負無窮和非數值。例如:
19 / +0; // Infinity
19 / -0; // -Infinity
字符串類型:String
JavaScript的字符串類型用于表示文本數據。在字符串中的每個元素占據了字符串的位置。第一個元素的索引為0,下一個是索引1,依此類推。字符串的長度是它的元素的數量。
在JavaScript中的字符串需要使用單引號''或雙引號""括起來,表示該值是一個字符串。
JavaScript 字符串是不可更改的。這意味著字符串一旦被創建,就不能被修改。但是,可以基于對原始字符串的操作來創建新的字符串。例如:
- 獲取一個字符串的子串可通過選擇個別字母或者使用String.substr()。
- 兩個字符串的連接使用連接操作符 (+) 或者String.concat()。
- 符號類型:Symbol 符號(Symbols)是ES6新定義的。符號類型是唯一的并且是不可修改的。Symbol不作為pre-course的學習重點。
對象:Object
javascript 中的對象(物體),和其它編程語言中的對象一樣,可以比照現實生活中的對象(物體)來理解它。 javascript 中對象(物體)的概念可以比照著現實生活中實實在在的物體來理解。
在javascript中,一個對象可以是一個單獨的擁有屬性和類型的實體。我們拿它和一個杯子做下類比。一個杯子是一個對象(物體),擁有屬性。杯子有顏色,圖案,重量,由什么材質構成等等。同樣,javascript對象也有屬性來定義它的特征。
對象可以通過new操作符后跟要創建的對象類型的名稱來創建。而創建Object類型的示例并為其添加屬性和(或)方法,就可以創建自定義對象,如下所示:
var o = new Object();
我們也可以通過下面的方式直接創建一個對象:
var person = {
name: 'Bob',
age: 20,
gender: 'male'
};
上述對象就定義了一個名為’Bob‘,20歲,的男生。
typeof操作符
由于JavaScript是松散類型的,因此需要有一種手段來檢測給定變量的數據類型——typeof就是負責提供這方面信息的操作符。對一個值使用typeof操作符可能返回下列某個字符串:
- 'undefined' —— 未定義
- 'boolean' —— 布爾值
- 'string' —— 字符串
- 'number' —— 數字值
- 'object' —— 對象或null
- function —— 函數 下面展示一下使用typeof的示例:
var message = 'some string';
alert(typeof message); // "string"
alert(typeof(message)); // "string"
alert(typeof 95); // number
在實際編程的過程中,可以用typeof判斷任何一個變量的數據類型。