JavaScript 擁有動(dòng)態(tài)類型
JavaScript 的變量是松散的,是一種弱類型或者說(shuō)動(dòng)態(tài)語(yǔ)言。具體體現(xiàn)在變量在存儲(chǔ)哪種數(shù)據(jù)類型方面沒(méi)有規(guī)定。
例如:
var foo = 42; // foo is a Number now
var foo = "bar"; // foo is a String now
var foo = true; // foo is a Boolean now
//在給一個(gè)變量賦予了某種數(shù)據(jù)類型之后,不建議更換數(shù)據(jù)類型(但是這樣做是有效的)
JavaScript七種數(shù)據(jù)類型
在 JavaScript 規(guī)范中,共定義了七種數(shù)據(jù)類型,分為 “基本類型” 和 “引用類型” 兩大類,如下所示:
- 基本類型:String、Number、Boolean、Symbol、Undefined、Null
- 引用類型:Object
1. 字符串String
- 字符串的作用:用于表示文本數(shù)據(jù)。
- 字符串的元素索引:字符中每個(gè)元素的位置用數(shù)字表示,第一位元素的序號(hào)是0,后面依次增加。字符串的長(zhǎng)度就是它元素的個(gè)數(shù)。
- 字符串的表現(xiàn)形式:使用單引號(hào)
'**'或雙引號(hào)"**"括起來(lái),表示該值是一個(gè)字符串。
例如:
var carname="Bill Gates";
var carname='Bill Gates';
可以在字符串中使用引號(hào),只要不匹配包圍字符串的引號(hào)即可:
var answer="Nice to meet you!";
var answer="He is called 'Bill'";
var answer='He is called "Bill"';
- 獲取一個(gè)字符串的子串可通過(guò)選擇個(gè)別字母或者使用
String.substr()。- 兩個(gè)字符串的連接使用連接操作符
(+)或者String.concat()。
P.S.這兩個(gè)大體明白是什么意思了,但是還沒(méi)有理解怎么用。有待進(jìn)一步探索。
- 符號(hào)類型(Symbol):符號(hào)(Symbols)是ES6新定義的。符號(hào)類型是唯一的并且是不可修改的。
2. 數(shù)字Number
- Number類型包含整數(shù)和浮點(diǎn)數(shù)(浮點(diǎn)數(shù)數(shù)值必須包含一個(gè)小數(shù)點(diǎn),且小數(shù)點(diǎn)后面至少有一位數(shù)字)兩種值
- JavaScript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點(diǎn),也可以不帶:
var x1=34.00; //使用小數(shù)點(diǎn)來(lái)寫
var x2=34; //不使用小數(shù)點(diǎn)來(lái)寫
極大或極小的數(shù)字可以通過(guò)科學(xué)(指數(shù))計(jì)數(shù)法來(lái)書寫:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
3. 布爾Boolean
布爾(邏輯)只能有兩個(gè)值:true 或 false。布爾常用在條件測(cè)試中。
var x=true
var y=false
4. 符號(hào)Symbol
Symbol 是 ES6 新增的一種原始數(shù)據(jù)類型,它的字面意思是:符號(hào)、標(biāo)記。代表獨(dú)一無(wú)二的值 。
5. Undefined和Null
Undefined 這個(gè)值表示變量不含有值。
Null 類型只有一個(gè)值:null,表示空值,表示沒(méi)有被呈現(xiàn).
可以通過(guò)將變量的值設(shè)置為null來(lái)清空變量。
// 值:undefined
var car="Volvo"; //值:"Volvo"
var car=null; //值:null
cars=null; //清空cars
person=null; //清空person
6. 對(duì)象Object
- javascript 中的對(duì)象(物體),和其它編程語(yǔ)言中的對(duì)象一樣,可以比照現(xiàn)實(shí)生活中的對(duì)象(物體)來(lái)理解它。 javascript 中對(duì)象(物體)的概念可以比照著現(xiàn)實(shí)生活中實(shí)實(shí)在在的物體來(lái)理解。
- 在javascript中,一個(gè)對(duì)象可以是一個(gè)單獨(dú)的擁有屬性和類型的實(shí)體。我們拿它和一個(gè)杯子做下類比。一個(gè)杯子是一個(gè)對(duì)象(物體),擁有屬性。杯子有顏色,圖案,重量,由什么材質(zhì)構(gòu)成等等。同樣,javascript對(duì)象也有屬性來(lái)定義它的特征。
- 對(duì)象可以通過(guò)new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來(lái)創(chuàng)建。而創(chuàng)建Object類型的示例并為其添加屬性和(或)方法,就可以創(chuàng)建自定義對(duì)象,如下所示:
var o = new Object();
我們也可以通過(guò)下面的方式直接創(chuàng)建一個(gè)對(duì)象:
var person = { name: 'Bob', age: 20, gender: 'male' };
上述對(duì)象就定義了一個(gè)名為’Bob‘,20歲,的男生。
typeof操作符
由于JavaScript是松散類型的,因此需要有一種手段來(lái)檢測(cè)給定變量的數(shù)據(jù)類型——typeof就是負(fù)責(zé)提供這方面信息的操作符。對(duì)一個(gè)值使用typeof操作符可能返回下列某個(gè)字符串:
'undefined' —— 未定義
'boolean' —— 布爾值
'string' —— 字符串
'number' —— 數(shù)字值
'object' —— 對(duì)象或null
function —— 函數(shù)
下面展示一下使用typeof的示例:
var message = 'some string';
alert(typeof message); // "string"
alert(typeof(message)); // "string"
alert(typeof 95); // number
在實(shí)際編程的過(guò)程中,可以用typeof判斷任何一個(gè)變量的數(shù)據(jù)類型。
數(shù)組Array
數(shù)組下標(biāo)是基于零的,所以第一個(gè)項(xiàng)目是 [0],第二個(gè)是 [1],以此類推。
下面的代碼創(chuàng)建名為 cars 的數(shù)組:
var cars=new Array();
cars[0]="Audi";
cars[1]="BMW";
cars[2]="Volvo";
或者 (condensed array):
var cars=new Array("Audi","BMW","Volvo");
或者 (literal array):
var cars=["Audi","BMW","Volvo"];
聲明變量類型
當(dāng)您聲明新變量時(shí),可以使用關(guān)鍵詞 "new" 來(lái)聲明其類型:
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
JavaScript 變量均為對(duì)象。當(dāng)您聲明一個(gè)變量時(shí),就創(chuàng)建了一個(gè)新的對(duì)象。
全文參考:思特沃克教程,JavaScript數(shù)據(jù)類型
拓展閱讀:淺談 javascript 六種數(shù)據(jù)類型以及特殊注意點(diǎn),淺談 javascript 的數(shù)據(jù)類型檢測(cè)