數據類型
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>
