開始學Javascript啦。

來源:互聯網
上載者:User

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>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.