1. 程式人生 > 實用技巧 >JS中的資料型別

JS中的資料型別

資料型別

var length = 11;// 數字
var lastName = "Gates";// 字串
var cars = ["Porsche", "Volvo", "BMW"];// 陣列
var x = {firstName:"Bill", lastName:"Gates"};// 物件 
字串(String)

字串(或文字字串)是一串字元(比如 "qwer")。字串被引號包圍,可使用單引號或雙引號。

<script>
	/*
	JS中建立字串物件有兩種方式,
	但是屬性和函式都是通用的。
	*/
	var s = "第一種(小string)";
	alert(typeof s);//string
	
	var ss = new String("第二種(大string)");
	alert(typeof ss);//object
	/*----------常用函式----------*/
	var func = "JavaScript";
	//獲取字串長度
	alert(func.length);//10
	//返回某個指定的字串值在字串中首次出現的位置
	alert(func.indexOf("va"));//2
	//如果要檢索的字串值沒有出現,則該方法返回 -1
	alert(func.indexOf("m"));//-1
	//判斷字串是否包含某個子字串
	alert(func.indexOf("n") >= 0 ? "包含" : "不包含");//不包含
	//返回一個指定的字串值最後出現的位置,在一個字串中的指定位置從後向前搜尋。
	alert(func.lastIndexOf("ri"));//6
	//在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。
	alert(func.replace("Java","Live"));//LiveScript
	//substr()和substring()的區別。
	//在字串中抽取從start下標開始的指定數目的字元,stringObject.substr(start,length)
	alert(func.substr(4,6));//Script
	//提取字串中介於兩個指定下標之間的字元(不包含endIndex)。
	alert(func.substring(1,3));//av
</script>
數字(Number)

JavaScript 只有這一種數值型別。整數、小數、正數、負數、不是數字(NaN)、無窮大(Infinity (或-Infinity))都屬於Number型別。

<script>
	/*
	數字和字串相加
	JS的加法和級聯(concatenation)都使用 + 運算子。
	數字用加法。字串用級聯。
	JS從左向右進行編譯,
	在有+運算子的情況下,數字相加就是數字;
	但只要有字串的參與,結果都是字串級聯。
	*/
	var x = 10;
	var y = 20;
	var z = "The result is: " + x + y;
	alert(z);//The result is: 1020
	
	/*
	從左到右運算時先算10+20,數字之間是加法,得30;
	遇到字串“30”後用級聯,所以是3030。 
	*/
	var t = "30";
	var result = x + y + t;
	alert(result);//3030
	
	/*
	在使用減(-)乘(*)除(/)運算子時,
	字串擁有數字內容的話,會被轉換成數字進行運算。
	*/
	var n = "10";
	var m = "20";
	var mn = (m-n)+(m/n)+(n*m)
	alert(mn);//212
	
	/*
	NaN屬於JS保留詞,指示某個數不是合法數。
	用一個非數字字串進行除法會得到NaN(Not a Number)。
	*/
	var a = 11;
	var b = "aaa";
	alert(a / b);//NaN
	
/*--------------------數字方法--------------------*/
	
	/*全域性JS函式isNaN()可以確定某個值是否是數*/
	alert(isNaN(b));//true(表示不是一個數字)

	/*全域性JS函式parseInt,
	可以將字串自動轉換成數字,
	並且取整數位。*/
	alert(parseInt("3.999999"));//3
	
	/*全域性JS函式parseFloat,
	可以將字串自動轉換成數字*/
	alert(parseFloat(3.2) + 1);//4.2
	
	/*函式Math.ceil,可以向上取整*/
	alert(Math.ceil(1.2));//2

/*--------------------數字方法--------------------*/
	
	/*在數學運算中使用NaN的話,結果也是NaN*/
	var nan = NaN;
	alert(a + nan);//NaN
	
	/*
	Infinity(或-Infinity)
	是JS在計算數時超出最大可能數範圍時返回的值。
	除以0也會生成 Infinity。
	*/
	function inf(){
		var myNumber = 2;
		while (myNumber != Infinity) {
			myNumber = myNumber * myNumber;
		}
		return myNumber;
	}
	var inf = inf();
	alert(inf);//Infinity
</script>
布林(Boolean)

1、布林值只有兩個值:true 或 false。
2、在Boolean型別中有一個函式:Boolean()。語法格式:
Boolean(資料)
Boolean()函式的作用是將非布林型別轉換成布林型別,有東西就是true,沒有就是false。

<script>
	var name = "";
	if(name){
		alert("歡迎你"+name);
	}else{
		alert("使用者名稱不能為空!")
	}
</script>

陣列(Array)

JavaScript 陣列用方括號書寫,陣列的專案由逗號分隔。

物件(Object)

1、是所有類的超類,JavaScript物件用花括號來書寫,物件屬性是name:value對,由逗號分隔。

var person = {
	firstName:"Bill", 
	lastName:"Gates", 
	age:62, 
	eyeColor:"blue"};

2、Object包含屬性有: prototype 屬性、constructor 屬性;方法有:toLocaleString 方法、toString 方法、valueOf 方法。
3、如何建立物件

<script>
	//如何建立物件
	function haha(){
		alert("haha");
	}
	//當做普通函式來呼叫
	haha();//haha
	//當做類來建立物件
	var obj = new haha();//haha
	alert(obj);//[object Object]
</script>

4、函式及擴充套件函式

<script>
	Haha = function(a,b,c){
		//宣告屬性
		this.no = a;
		this.name = b;
		this.age = c;
		//函式
		this.getAge = function(){
			return this.age;
		}
	}
	var u1 = new Haha(11,"zhangsan",20);
	var uage = u1.age;
	alert(uage);//20
	//可以通過prototype這個屬性來給類動態擴充套件屬性以及函式
	Haha.prototype.getNo = function(){
		return this.no;
	}
	//呼叫擴充套件的getNo函式
	var uno = u1.no;
	alert(uno);//11
	//給string擴充套件一個函式
	String.prototype.xixi = function(){
		alert("string擴充套件函式");
	}
	"aaa".xixi();//string擴充套件函式
</script>
空(Null)

1、在 JavaScript 中,null 是 "nothing"。它被看做不存在的事物。但是,在 JavaScript 中,null 的資料型別是物件。
2、可以把 null 在 JavaScript 中是物件理解為一個 bug。它本應是 null。
3、可以通過設定值為 null 清空物件(也可以通過設定值為 undefined 清空物件):

var person = null;// 值是 null,但是型別仍然是物件
alert(typeof null);//object

4、空值與undefined不是一回事,空的字串變數既有值也有型別:

var car = "";// 值是 "",型別是 "string"
未定義(Undefined)

1、在JavaScript中,沒有值的變數,其值是undefined。typeof 也返回undefined。
2、任何變數均可通過設定值為undefined進行清空。其型別也將是undefined:

person = undefined;// 值是 undefined,型別是 undefined

3、null、NaN、undefined

<script>
	alert(null == NaN);//false
	alert(null == undefined);//true
	alert(undefined == NaN);//false
</script>
JavaScript 擁有動態型別

JavaScript 擁有動態型別。這意味著相同的變數可用作不同的型別:

var x;               // x 為 undefined
var x = 5;           // 現在 x 為數字
var x = "John";      // 現在 x 為字串
typeof 運算子

1、JS中有一個運算子叫做typeof,這個運算子可以在程式的執行階段動態的獲取變數的資料型別。
2、typeof運算子的語法格式:
typeof 變數名
3、typeof運算子的運算結果是以下6個字串之一,注意字串都是小寫(typeof運算子返回變數或表示式的型別。):
"undefined"、"number"、"string"、"boolean"、"object"、"function"

<script>
	function sum(a,b){
		if(typeof a == "number" && typeof b == "number"){
			return a + b;
		}
		alert("格式錯誤");
	}
	var value = sum(2,"abc");
	alert(value);
	//格式錯誤
	//undefined
			
	var value2 = sum(1,2);
	alert(value2);//3
			
	var q;
	alert(typeof q);//undefined
			
	var w = 11;
	alert(typeof w);//number
			
	var e = "abc";
	alert(typeof e);//string
			
	var r = null;
	alert(typeof r);//object
		
	var t = false;
	alert(typeof t);//boolean
				
	function mc(){}
	alert(typeof mc);//function
</script>
===運算子

當使用=== 相等運算子後,相等的數變為不相等,因為===運算子需要型別和值同時相等。

<script>
	var x = 500;             
	var y = new Number(500);
	var z = 500;
	alert(x === y);//false
	/*因為x和y的型別不同。*/
	alert(x === z);//true
</script>