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>