1、Javascript執行順序
1.1、Javascript是頁面執行順序,從上到下逐行執行的
執行個體1:
<script type="text/javascript">
alert(new Date().toLocaleDateString());//顯示本地目前時間
</script>
執行個體2:
1.2、事件 onclick……
<!--這裡的href=""不是事件,是屬性-->
<a href="javascript:alert('Show me')">Show Me</a>
2、變數類型
2.1、聲明變數都是用 var ,動態類型。
2.2、命名規則:以字母、底線或$開頭,中間可以包括字母、數字、底線或$。
2.3、可以雙引號,也可以單引號聲明變數。如:var name='cy' 或name="cy"
2.4、不用聲明直接使用的變數是全域變數。如:name="yi";
1、預設如果直接在script標籤中定義變數,則屬於“全域範圍範圍”(全域執行環境),即屬於window對象。
2、全域範圍範圍的變數直到網頁關閉或瀏覽器關閉時才釋放資源
3、一個頁面中的多個<script>標籤中的變數可以互相訪問。
4、JS有記憶體回收機制,會定時對可釋放資源的變數回收。將變數設定為null則表示可以被回收了。
2.5、null與undefined區別:
1、undefined表示一個未知狀態
(1)、聲明了,但是沒有初始化該變數,變數的值是一個未知狀態(undefined)
(2)、方法沒有明確的傳回值時,傳回值是一個undefined
(3)、對未聲明的變數使用typeof運算子時,顯示為undefined
2、null表示尚未存在的對象,可以為變數賦值為null,用null初始設定變數,清除變數內容,釋放記憶體
3、undefined==null,結果為true,但含義不同。
4、undefined===null 結果為false,先判斷類型,然後判斷值。
2.6、JavaScript中判斷已聲明變數、參數是否初始化(可用)的方法
1、if(typeof(x)!='undefined' && x!=null){ alert('可用')};
2、if(x) {alert('變數可用')}; null、undefined、0都認為是false
推薦用最後一種方法。但如果x有可能沒有聲明,則只能用typeof判斷(否則會報錯)
3、函數
3.1、不需要聲明傳回值類型、參數類型。函數定義以function開頭:function Fun(name,age){};
3.2、JavaScript中不像C#中那樣要求所有路徑都有傳回值,沒有傳回值就是undefined。
3.3、javascript中沒有方法重載。
執行個體(實現方法重載可以通過arguments參數數組實現)
function Fun()
{
for(var i=0;i<arguments.length;i++)
{
document.write(arguments[i]);
}
}
Fun("hello",22,true);//實現調用
3.4、匿名函數:
執行個體(匿名函數的使用)
var a=function(x1,x2){ return x1+x2;};
alert(a(2,4));
4、物件導向
4.1、函數就是對象,對象就是函數。
4.2、方法直接調用為函數,使用new 為對象。
執行個體1(一般方法寫一個Person對象)
function Person(){}; //建立一個Person對象
var p=new Person(); //建立對象
p.Name='張三';//動態語言,直接屬性賦值
p.Age=21;
p.SayHello=function(){ alert('Hello!')};//對象方法
alert(p.Name);//擷取對象屬性
alert(p['Age']);另一種動態訪問屬性的方式
執行個體2(閉包建立對象,使用this)
function Person(Name,Age) { this.Name=Name;//為屬性賦值 this.Age=Age; this.ShowMe=function() { alert('大家好啊!,我叫'+this.Name+',今年'+this.Age+'歲。'); } } var cy=new Person('caoyi',22); cy.ShowMe();
5、String字串
5.1、length屬性:擷取字串的字元個數。 如:var str='我是abc';alert(str.length);//結果為 5
5.2、charAt(index)方法:擷取指定索引位置的字元(索引從0開始)。如:alert(str.charAt(1));//結果為 '是'
5.3、indexOf(‘字串’,startIndex)方法:擷取指定字串第一次出現的位置。startIndex表示從第幾個開始搜尋。
5.4、split(‘分隔字元’,limit);//根據分隔字元將一個字串返回為一個數組。
5.5、substr(startIndex,len)//從startIndex開始,截取len個字元。
5.6、substring(startIndex,stopIndex)//從startIndex開始,截取到stopIndex位置(不包括stopIndex所在的字元)。
5.7、toUpperCase()//轉換大寫、toLowerCase();//轉換小寫。
5.8、match()、replace()、search()方法,Regex相關。
6、Array數組
6.1、Array對象就是動態數組,類似於c#中的ArrayList、Hashtable等的綜合
6.2、無需預先定義大小,可以動態建立
執行個體1(建立數組)
var names=new Array(); names[0]='Jim'; names[1]='tom'; var arr=['China',2008,true];//簡化賦值
執行個體2(合并數組)
function MySplit(arr,spe) { if(!spe) { spe=',';//如果為空白,預設用,分割 } var str=arr[0]; for(var i=1;i<arr.length;i++) { str=str+spe+arr[i]; } return arr; }
7、RegExpRegex
7.1、建立方法
1、建立RegExp對象,如:var regex = new RegExp("\\d{5}");沒有@,\\代表\ 。
2、/運算式/,如:var reg=/\d+/;此時不用考慮逸出字元。
7.2、RegExp對象的方法
1、test(str):判斷字串str是否匹配Regex,相當於IsMatch。
例如:var regex=/.+@.+/; alert(regex.test("123@qq.com"));
2、exec(str):進行搜尋匹配,傳回值為匹配結果,沒有找到返回null。
7.3、String對象中的Regex
1、str.match(regex),相當於調用exec
執行個體1:var s="abc@163.com";
var regex=/(.+)@(.+)/; var match=s.match(regex);//匹配獲得結果集 alert(RegExp.$1+",伺服器:"+RegExp.$2);
執行個體2(擷取分組中的資料):
var arr=str.match(/(.+)@(.+)/); //擷取分組中的資料 alert(RegExp.$1); for (var i = 0; i < arr.length; i++) { alert(arr[i]); }
2、str.replace(/正則表達/,strR);
執行個體1(字元替換):
// g全域匹配 var str2="北京 北京 北京"; alert(str2.replace(/北京/g,"武漢")); //i忽略大小寫 var s="AAAbbbaacsda"; alert(s.match(/a+/gi));
8、Json對象
8.1、Json定義:
Json對象是一個無序的'名稱/值'對集合。一個對象以{開始,}結束。每個名稱後跟一個:成對的名稱和數值之間用,分割。
執行個體(Json資料的建立和訪問)
<script type="text/javascript"> //建立json var json = { "name": "張三", "age": 18, "sex": "男" }; //擷取值 alert(json["name"]); //遍曆 for (var key in json) { alert(key+"==="+json[key]); } //建立Json var json2 = { "class1": [ { "name": "張三", "age": 18, "sex": "男" }, { "name": "張三1", "age": 28, "sex": "男" }, { "name": "張三2", "age": 48, "sex": "男" }, { "name": "張三3", "age": 58, "sex": "男" }, { "name": "張三4", "age": 16, "sex": "男" } ], "class2": [ { "name": "張三", "age": 18, "sex": "男" }, { "name": "張三1", "age": 28, "sex": "男" }, { "name": "張三2", "age": 48, "sex": "男" }, { "name": "張三3", "age": 58, "sex": "男" }, { "name": "張三4", "age": 16, "sex": "男" } ] } var arr = json2.class2; for (var i = 0; i < arr.length; i++) { alert(arr[i].name); } </script>