天天看點

Javascript提升階段學習

JavaScript

1:javascript簡介

  JavaScript是一種腳本語言,能實作網頁内容的互動顯示,當使用者在用戶端顯示該網頁時,浏覽器就會執行JavaScript程式,使用者通過互動的操作來改變網頁等等内容,來實作html語言無法實作的效果

  (html是網頁的基礎,css是樣式,js是特效)

2:javascript語言特點

  2.1:JavaScript是基于對象和事件驅動的(動态的),它可以直接對使用者或客戶輸入做出響應,無須經過web服務程式,他對使用者的響應,是采用以事件驅動的方式進行的 ,所謂事件驅動,就是指在首頁中執行了某種操作産生的動作,就成為事件。比如按下滑鼠,移動視窗,選擇菜單都可以視為事件,當事件發生後,可能引起相應的事件響應

  2.2:JavaScript是跨平台的

    javascript是依賴于浏覽器本身的,與作業系統無關。

3:如何使用JavaScript

  3.1:通過<script></script>中直接編寫

  3.2:通過<script src='目标文檔的URL'></script>連結外部的js檔案

  3.3:作為某個元素的事件屬性值或者是超連結的href屬性值

    <a href="javascript:alert('hello')">點選</a>

4:代碼屏蔽

  4.1:<!--//-->當浏覽器不支援js時進行代碼屏蔽

  4.2:如果浏覽器不支援js,可以使用<noscript></noscript>标簽,顯示noscript中的内容

5:javascript的基本文法

  5.1:JavaScript的執行順序

    (1):按照在html檔案中出現的順序依次執行

    (2):優化由于html的執行順序則js的代碼(腳本)最好放在body标簽中,放到網頁的最後,css樣式放在head标簽中

    (遵循雅虎14條前端優化的規則)

  5.2:大小寫敏感,忽略空白符和換行符

    JavaScript嚴格區分大小寫

  5.3:語句分隔符

    使用結束語句;

    可以把多個語句寫在一行;

    最後一個語句的分号可以省略,但盡量不要省略;

    可以使用{}括成一個語句組,形成一個block塊;

  5.4:\進行折行操作是針對代碼的,避免一行過長,

    document.write("asdfghjklqwer\

      tyuiopzxcvbnm");

  5.5:注釋

    //單行注釋内容

    /*

    *多行注釋内容

    */

  5.6:JavaScript中的錯誤

  5.7:通過document.write()向文檔書寫内容(不可以拿來調試bug)

    通過console.log()向控制台寫入内容(控制台輸出)

  5.8:火狐浏覽器

   進行程式的斷點調試,插件的安裝,菜單--》附加元件--》Firebug

  (F12打開Firebug,firebug第一可以檢視和編輯修改html和css的源碼

  第二頁面概況,第三動态執行JavaScript。火狐工具打斷點調試,第四監控網絡情況)

6:Javascript變量和資料類型

  6.1:定義變量

    var 變量名;(var這個關鍵詞可以省略的);

  6.2:javascript變量的類型是如何決定的

    JavaScript中變量的資料類型是js引擎決定的;

  6.3:typeof關鍵字

    檢查變量代表的具體資料類型

    document.write(typeof name);

    document.write(typeof age);

    document.write(type 18);

  6.4:資料類型

    (1):基本資料類型

      數值類型(Number):判斷是否是數值類型isNaN();

      布爾類型(Boolean)

      字元串類型(String)

      null:空值 var sex=null;結果為null;

      null類型隻有一個值,就是null,

      undefined:表示不存在的值或者尚未指派的變量,對一個變量隻聲明不指派或者賦予一個不存在的屬性值,都會使這個變量的值為undefined

      undefined類型隻有一個值undefined,當聲明的變量未初始化的時候,該變量的預設值就是undefined

      document.write(null==undefined);結果為true;

      null和undefined的差別:null表示尚未存在的對象(typeof null),undefined聲明變量但未對其初始化時賦予該變量的值

    (2):複合資料類型(引用資料類型)

      對象:var obj=new Object();

      數組:var arr=new Array();

      函數:var test=function(){

        console.log("函數的使用");

      }

    //調用函數

    test();

  6.5:轉換成數值

    (1):轉換成整形:parseInt();

    (2):轉換成浮點型:parseFloat();

    (3):Number()函數

    (4):注意:Number函數将字元串轉換為數值比parseInt函數嚴格的多,基本上隻要有一個字元無法轉換成數值,整個字元串都會被轉換為NaN;

7:運算符與表達式

  7.1:表達式-表達式是用于JavaScript腳本運作時進行計算的式子,可以包含常量,變量,運算符

  7.2:運算符

    (1):算術運算符:

      +,-,*,/,%,++,--

    注意:

      《1》+号用來連接配接兩個字元串

      《2》js代碼的執行順序是從左到右,是以在+連接配接的表達式中,遇到字元串型資料之前,所有出現的數值型資料

        (或者可以自動轉換為數值型的資料)仍被作為數值來處理,為了避免這種情侶,我們可以在表達式前拼一個空字元串

      《3》隻要+連接配接的操作數中有一個是字元串型,js就會自動把非字元串型資料作為字元串型資料來處理

    (2):字元連接配接符:通過+連接配接字元串

    (3):指派運算符:=,+=,-= ,*= ,/= ,%=

    (4):比較運算符:>, < ,>= ,<= ,== ,!= ,!== ,===,

      比較運算符的結果為布爾類型

      注意:==用于一般比較,隻要求值相等;===用于嚴格比較,值和類型都相等,隻要類型不比對就傳回false;=是指派

      執行個體:document.write("1"==true);//true

          document.write("1"===true);//false

      (5):邏輯運算符:&&,||,!

      &&:結論第一個表達式為false,第二個表達式不執行;第一個表達式為true,第二個表達式才執行。

      ||:結論第一個表達式為false,第二個表達式才執行;第一個表達式為true,第二個表達式不執行。

         注意:邏輯運算符的結果為布爾類型,&&如果第一個表達式為false,造成短路,||如果第一個表達式為true,造成短路

    (6):三元運算符:

      exp1?exp2:exp3;

    (7):其他運算符:

      (1):void運算符,用來指明一個表達式傳回結果

      (2):typeof運算符,用來傳回一個字元串,傳回的是操作數的資料類型

  7.3:運算符的優先級-通過()改變優先級

8:流程控制

  8.1:條件語句

    if(exp)執行一句代碼

    if(exp){執行代碼塊};

    if(exp){exp為true執行代碼段}else{exp為false執行代碼段};

    if...elseif...

    switch...case

    if嵌套

  8.2:循環語句

    (1):for循環:for(語句1;語句2;語句3){語句塊}

    特殊情況如下

    for(x in arr)

    var arr={"張三","李四","阿五"};

    for(x in arr){document.write(arr[x]);}

    (2):while循環

      while(條件語句1){語句塊}

    (3):do...while循環(這個循環至少會執行一次,即使這個條件為false)

      do{語句塊}while(條件語句1);

  8.3:特殊循環控制

    (1):break終止循環

    (2):continue跳過當次循環,進入下次循環

9:Javascript函數

  9.1:什麼是函數?

    函數是完成某一功能的代碼段,函數是可重複執行的代碼段,函數友善管理和維護

  9.2:函數的定義和使用

    9.2.1:函數的分類:

       自定義函數,我們自己編寫的函數,通過function關鍵字;

       function 函數名稱([參數...]){代碼段;return 傳回值;}

       系統函數,JavaScript自帶的函數,如alert函數

    9.2.2:函數的聲明

      常用方式:function 函數名([參數...]){代碼段;} 調用方式:函數名();

      函數表達式:var 函數名=function([參數...]){語句塊;} 調用方式:var 變量=函數名(); 變量("實際參數");

    9.2.3:函數的調用方式

      普通調用:functionName(實際參數...)

      通過指向函數的變量去調用:var myVar=函數名;myVar(實際參數);

  9.3:函數傳回值

    當函數無明确傳回值時,傳回的值就是undefined

    當函數有傳回值時,傳回值是什麼就傳回什麼

  9.4:參數

    9.4.1:函數可以有參數也可以沒有參數,如果定義了參數,在調用函數的時候沒有傳值,預設設定為undefined

    9.4.2:在調用函數時如果傳遞參數超過了定義時參數,js會忽略掉多餘的參數

    9.4.3:可變參數

      函數的參數清單可以是任意多個,并且資料類型可以是任意的類型

      可以通過arguments對象實作可變參數的函數

  9.5:局部變量,全局變量

    9.5.1:局部變量

      在函數體内聲明的變量,僅在函數體内可以使用

    9.5.2:全部變量

      函數體外聲明的變量,在變量聲明開始到腳本結束都可以使用

    9.5.3:注意

      盡量控制全局變量的數量,容易引發bug

      最好總是使用var 語句來聲明變量

  9.6:JavaScript建立動态函數

    動态函數比較用Function對象來定義(Function是JavaScript中的一個對象,是固定不變的,規定Function對象的"F"必須大寫)

    建立動态函數的基本格式:var 變量名=new Function("參數1","參數2","參數3","參數n","執行語句");

  9.7:匿名函數

    9.7.1:直接聲明一個匿名函數,立即使用;

    9.7.2:好處:省得定義一個用一次就不用的函數,而且避免了命名沖突的問題。js中沒有命名空間的概念,是以很容易函數命名的沖突,一旦命名沖突以最後聲明為準

    9.7.3:格式:

      alert(function(i1,i2){return i1+i2; }(10,9));

  9.8:JavaScript不支援函數的重載

    javascript沒有方法重載的說法,如果兩個方法名字一樣,即使參數個數不一樣,那麼後面定義的就會覆寫前面定義,調用方法調用的是後面的方法。

  9.9:JavaScript函數的特殊性

    JavaScript中的函數本身就是變量,是以函數也可以當做普通變量來使用。

  9.10:JavaScript全局函數

 10:javascript全部函數

    10.1:parseInt(string,radix):傳回轉換成整數的值

    10.2:parseFloat(string):傳回轉換成浮點數的值

    10.3:isFinite(value):檢測某個是否是無窮值

    10.4:isNaN(value):檢測某個值是否是NaN,檢測是否是非數字值,如果值為NaN傳回true,否則傳回false

        var a="111";

        alert(isNaN(a));

    10.5:encodeURI(uri):将字元串編碼為URI

        注意:使用decodeURI()方法可以編碼URI(通用資源辨別符:UniformResourceIdentifier,簡稱"URI")

            對以下在URI中具有特殊含義的ASCII标點符号,encodeURI()函數不會進行轉義的:. / ? : @ & = + $ #(可以使用encodeURIComponent()方法分别對特殊含義的ASCII标點符号進行編碼)

    10.6:decodeURI(uri):解碼某個編碼的URI

    10.7:encodeURIComponent():将字元串編碼為uri元件

    10.8:dncodeURIComponent():解碼一個編碼的uri元件

    10.9:escape():對字元串進行編碼

    10.10:unescape():解碼由escape()編碼的字元串

    10.11:eval():将javascript字元串當作腳本來執行

        注意:

            如果參數是一個表達式,eval()函數将執行表達式,如果參數是javascript語句,eval()将執行javascript語句

            eval()函數是一種由函數執行的動态代碼,比直接執行腳本慢很多

            慎重使用eval()函數,盡量不用,保證程式的安全性

        var str="alert('測試')";

        eval(str);

    10.12:Number(object):把對象的值轉換為數字

        注意:如果對象的值無法轉換為數字,Number()函數傳回NaN

            如果參數的Date對象,Number()傳回從1970年1月1日到現在所經曆的毫秒數

    10.13:String:把對象的值轉換為字元串

            String()函數傳回與字元串對象的toString()方法值一樣

        var b=new Number(true);

        alert(b);

        var c=new String(123);

        alert(c+111);

11:事件

    11.1:什麼是事件?

        指的是文檔或者浏覽器視窗發生的一些特定互動瞬間,我們可以通過偵聽器(或者處理程式)來預定事件,以便事件發生的時候執行相應的代碼

    11.2:滑鼠事件

        onmousedown:滑鼠按鈕被按下

        onmousemove:滑鼠被移動

        onmouseout:滑鼠從某元素移開

        onmouseover:滑鼠移到某元素之上

        onmouseup:滑鼠按鍵被松開

    11.3:鍵盤事件

        onkeydown:某個鍵盤按鍵被按下

        onkeypress:某個鍵盤按鍵被按下并松開

        onkeyup:某個鍵盤按鍵被松開

    11.4:表單事件

        onblur:元素失去焦點

        onchange:域的内容被改變

        onclick:當使用者點選某個對象的調用的事件句柄

        ondblclick:當使用者輕按兩下某個對象的調用的事件句柄

        onerror:在加載文檔或圖像時發生錯誤

        onfocus:元素獲得焦點

        onselect:文本被選中

        onsubmit:确認按鈕被點選

        onunload:使用者退出頁面

12:DOM

    12.1:DOM簡介:當網頁被加載時,浏覽器會建立頁面的文檔對象模型(Document Object Model)

        javascript能夠改變頁面中的所有HTML元素

        javascript能夠改變頁面中的所有HTML屬性

        javascript能夠改變頁面中的所有css樣式    

    12.2:檢視HTML元素

        注意:通過id找到HTML元素--document.getElementById("info");

              通過标簽名找到HTML元素--document.getElementsByTagName

              通過标簽的name屬性擷取元素--document.getElementsByName

    12.3:改變HTML輸出流document.write

    12.4:修改HTML内容:使用innerHTML屬性

13:Javascript數組的學習和應用

  13.1:數組的建立

    1:document.write("1:建立一個空數組"+"<br/>");

      var arr1=new Array();

    2:document.write("2:指定數組的長度"+"<br/>");

      var arr2=new Array(5);

    3:document.write("3:建立數組并初始化參數"+"<br/>");

      var arr3=new Array(9528,"小别","男");

    4:document.write("4:建立一個數組"+"<br/>");

      var arr4=[];

    5:document.write("5:使用括号[],并且傳入初始值"+"<br/>");

      var arr5=[12,23,45,6,8];

繼續閱讀