JavaScript基礎語句

來源:互聯網
上載者:User

標籤:迴圈控制   字元   parse   嵌入   部分   提示   訪問   多層嵌套   一個   

一、前言:

  有過學習其他語言的經曆,會比較好上手。但是,沒有學過也無關大雅。只要認真學,都會學好。畢竟,都只是一些基礎的語句。關鍵在於要會運用。 掌握好語句的嵌套,以及要的邏輯思維能力,就已經成功一大半了。

二、JS中的變數和輸入輸出

  使用JS的三種方式

    1. 在HTML標籤中直接內嵌js (並不提倡使用)不符合W3C關於內容與行為分離的要求!!!!
          

<button onclick="alert(‘快點點點點啊‘)">點啊</button>

     
    2. 在HTML頁面中,使用<script></script>標籤包裹代碼;

<script type="text/javascript">//js代碼</script>

     <script></script>標籤可以放在頁面的任何位置 也可放多個,但一般只放一個

    3.  引入外部的JS檔案
      <script language="JScript"src="js檔案路徑"></script>
    注意事項
      1.  <script></script>可以嵌入到頁面的任意位置,但是位置的不同,會導致js代碼執行的順序不同
        比如<script></script>放到<body></body>前面則js代碼會在頁面載入之前就執行
      2.  引入外部的JS代碼,<script></script>必須是成對出現的標籤。而且,標籤中不能再有任何的代碼      

JS中的變數
    1.JS中變數聲明的寫法
      var num = 10;  // 使用var聲明的變數屬於局部變數,只在當前範圍內有效。
          但是,如果是在<script>中直接聲明,那就相當於是全域變數

      num = 10;    // 不用var聲明的變數,預設為全域變數,在整個JS檔案中(該語句下面)都有效。

      var x=8,y, z = 10;    // 使用一行語句同時聲明多個變數。上式中,y屬於已聲明,但是未賦值狀態,結果為undefined

    聲明變數的注意事項
        ①.JS中,所有變數的聲明,均使用var關鍵字。變數具體是什麼類型,取決於給變數所賦值的類型;
        ②.JS,同一個變數,可以在多次不同賦值時,修改變數的資料類型;
          var a = 10;   // 從初始聲明時,a屬於整數型
          a =" hahaha”;   // 重賦值時,整數型的a被修改為字串類型;
        ③. 變數可是使用var聲明,也可以不是用var聲明;
          【區別】使用 var聲明是局部變數,不是用var是全域變數

        ④.只用var聲明但是不賦值。結果為undefined。
            例如:var a;//只聲明不賦值的a為undefined。但是,如果不聲明也不賦值的a,直接使用會報錯。

        ⑤.同一變數名,可以多次使用var聲明但是後面的var並沒有任何作用。第二次使用var聲明時,只會被理解為普通的賦值操作

    2.變數名的命名要求
        ①.變數名只能有,字母,數字,底線組成;
        ②.開頭不能是數字;
        ③.變數名區分大小寫。大小寫字母為不同變數大寫字母一般聲明常量

    3.變數名的命名規範
      ①.要符合小駝峰法則(駱駝命名法):
        首字母小寫,之後每個單詞的首字母大寫;如:myNameIsPengWei     √
      ②.或者使用匈牙利命名法:
          說有字母小寫,單詞之間用_分隔 my_name_is_peng_wei       √
      ③.mynameispengwei 能用,但是不規範

   4.js中的資料類型:均用var聲明,但變數具體是什麼類型,取決於給變數所賦值的類型;
        ndefined:未定義。已經使用var聲明的變數,但是沒有賦值。var a;
        null:表示空的引用。
        boolean:布爾類型。表示真假。只有兩個值:true/flase
        number:數實值型別。可以是整數,也可以是小數。
        string:字串類型。用雙引號或單引號包裹的內容,稱為字串。
          object:物件類型。後續講解。。。。

  5.常用的數值函數
    ①isNaN():判斷一個變數或常量,是否是NaN(not a number 數值)
            NaN 不等於 NaN
      使用isNaN()判斷時,會嘗試使用Number()函數進行轉換,如果最終能夠轉成數字,則不是NaN,結果為flase

    ② Number()函數:將其他類型的資料嘗試轉為數值型;
        【字串類型】
            》》字串為純數值字串,會轉為對應的數字:“11”—->11
            》》字串為空白字串,會轉為0;""-->0
            》》字串包含任何其他字元時,都不能轉;“1a”-->NaN
        【Boolean類型】
          true->1 flase->0
        【null和undefined類型】
             null->0undefined->NaN
        【object】
          *(後續講解)
  ③ ParseInt():將字串轉為整數類型
    》》Null 字元串,不能轉。“”-->NaN
    》》包含其他字元的字串會截取第一個非數值字串前的數字部分
        “12a23”-->"12" "aqw12"-->NaN
    》》parseInt()只能轉字串和整型(能將小數轉為整數),轉其他類型,全是NaN

    ☆☆【Number函數與ParseInt函數的區別】重點
        1.number函數能轉各種資料類型,parseint函數只能轉字串
        2.兩者在轉字串時,結果不完全相同(詳見上面解釋)

  ④parsefloat:將字串轉為數值型
      轉換規則與parseint相同,只是如果有小數,則保留小數點,如果沒有小數,則依然是整數;
      “12.5”-->12.5"12"-->12
  ⑤typeof:監測變數的資料類型:
      字串-->string 數值-->Number 未定義-->Undefined
      true/flase-->boolean 對象/noll-->object 函數-->function   

  【js中常用的輸入輸出語句】
    1.document.write()。將()中的內容列印輸出到瀏覽器螢幕上
      使用時,需注意,除變數常量外的所有內容,必須放到""中。變數和常量之外的內容必須放到""外面
      如果同時有變數和字串,必須用+連結eg:document。write("左手中的紙牌"+left+"<br/>");
    2.alert():使用彈窗輸出
      彈窗警告,()的內容與上述要求相同
    3.prompt():彈窗輸入;
      接受兩部分參數
      ① 輸入框上面的提示內容,可選
      ② 輸入框裡面的預設資訊,可選
        當唯寫一部分時,表示輸入框上面的提示內容;
        可以定義變數,接受輸入的內容。點擊確定按鈕,變數將被賦值為輸入的內容,點擊取消按鈕,變數將被賦值為null
        輸入內容時,預設接受的資料類型都是字串!!

三、運算子

  1. 算術運算(單目運算子)
    + 加、   -減、    *乘、    /除、    % 取餘、    ++ 自增、   -- 自減

  注意::有加減運算時,要注意是否要將數字轉為數值型

  ①  +    :有兩種作用:連結字串 和 加法運算。
      當+兩邊全為數字時,進行加法運算;
      當+兩邊任意一邊為字串時,起連結字串的作用,連結之後的結果為字串
      除+外,其餘符號運算時,會嘗試將作用兩邊變數用number函數轉為數字
  ②  /    :  結果會保留小數點
  ③   ++  :自增運算子,將變數在原有基礎上+1
  ④    --   : 自減運算子,將變數在原有基礎上-1

    a++與++a的異同
          1. 同: 無論是a++還是a--,運算完後的值均會加1;
          2. 異: a++,先用a的值去運算,,再把a加1
              ++a,先把a+1,再用a+1之後的值去運算。
  例如         

var a = 3,b,c;b = a++  + 2;        //先用a運算:b = 3 + 2; 再將a+1:a = 4c = ++a  + 2;        //現將a+1:a = 5;    再用a值運算:c = 5 + 2;                      //a=5  b=5 c=7


  2.賦值運算
      = 賦值  +=    -=    *=    /=     %=

     +=: a+=b: 相當於a=a+b;但是,前者的運算效率要比後者快,所以推寫法薦前的者

  3.關係運算
    ==等於、===嚴格等於    !=不等於、  !==不全等     >、  <、   >=、  <=

    ①  關係運算子,運算之後的結果,只能是boolean類型;
    ②  判斷一個數字是否處於某個區間,必須用&&串連
      eg: a<10 && a >0  √      10>a>0 ×  

    ③  ===:  嚴格等於:要求不但要類型相同,值也必須相同;類型不同,結果直接為false;類型相同,再進行下一步判斷
      ==:  等於:類型相同,與===效果一樣。類型不同時,會先嘗試用number函數將兩邊轉為數字,然後再進行判斷
    但是,有個別特例
      alert(null === flase) 結果為false


      var a;
      alert(a == null)結果為true

      alert(NAN == NaN)結果為false

      alert(1!="1") 結果為false
      alert (1!=="1")  結果為true

   4.條件運算子(多目運算)
      a>b?true:false
      有兩個重要符號: ? 和  :
      當?前面部分,運算結果為true時,執行:前面的代碼
      當?前面部分,運算結果為false時,執行:後面的代碼

      冒號兩邊可以為數值,則整個式子可用於賦值。   var a = 1 > 2 ? 1 : 2;
      冒號兩邊可以為代碼塊,將直接執行代碼。     1 < 2 ? alert(1 : alert(1);
      多目運算子可以多層嵌套。                var a = 1< 2 ? alert(1) : alert(1);


  5.位元運算符、 邏輯運算子
    && 與、|| 或、! 非(單目運算子)

         &&:兩邊都成立時結果為true
       ||:兩邊有任意一邊成立時,結果為true

  6.運算子的優先順序
    ()        小括弧最高
     ! ++ --
    *     / %
    +    -
    >   <    >=   <=
    ==   !=
    &&                    || 和 && 同時存在時,&&優先順序高於||
    ||
    =   +=   -=   *=    /=  賦值符最低

 四.分支結構

  1. 多目運算子
    a>b?true:false

  2.  if-else結構
    ①結構的寫法
      if(判斷條件){
        //條件為true時,執行if的{}
      }else{
        //條件為false時,執行else的{}
      }

    ②.注意事項
      ① else語句塊。可以根據情況進行省略。
      ②if和else後面的{}可以省略,但是省略{} 後,if和else後面只能跟一條語句,所以,並不建議省略{}。
    ③   if 的()中的判斷條件,支援的情況:

        ① boolean:true為真,flase為假;
        ② string:非Null 字元串為真,Null 字元串為假;
        ③ number:非0數字為真, 0為假;
        ④ null/undefined/NaN:全為假;
        ⑤ object:全為真。

  3. 多重if,階梯if結構
    ①.結構寫法
      if(條件1){
        條件1成立時,支援語句
      }else if(條件2){
        條件1不成立,並且條件2成立時,執行的語句
      }else{
        上述所有條件都不成立時,執行的語句
      }
    
    ②.多重if結構中,各個判斷條件是互斥的,執行選擇其中一條路執行。遇到正確選項並執行完後,直接跳出結構,不在判斷後續分支


   4.嵌套if結構
      ①結構寫法
        if(條件1){
          條件1,成立

          if(條件2){
          條件1,並且條件2,成立
          }else{
            條件1成立,條件2不成立
          }
        }else{
           條件1,不成立
        }

    ②.在嵌套if結構中,如果省略{}、則else結構永遠屬於離它最近的if結構
    ③嵌套結構可以多次嵌套,但是一般不推薦超過三層
        能用多重if結構的時候一般不推薦使用嵌套if。

    5.switch - case結構
      ①.結構寫法: 如下
      ②注意事項:
        ①switch機構()中的運算式,可以使用JS支援的各種資料類型。
        ②switch機構在進行判斷時,使用 === 判斷。
        ③case後面的運算式(允許有多個語句),可以是各種資料類型,但是,case的值要求各不相同,否則,也只會執行,第一個case
        ④ break作用:執行完case代碼後,跳出當前switch機構
          缺少break後果:
              從第一個正確的case項開始執行後面的所有case 和default;
          原因: switch結構在進行判斷的時候,只會判斷一次正確答案,當遇倒正確的case後,將不再判斷後續的項目
        ⑤  switch結構的執行效率要比多重if快。在多路分支中,推薦優先使用switch

五.迴圈結構

    1.while迴圈結構的執行步驟
      ①.聲明迴圈變數
      ②判斷迴圈條件
      ③.執行迴圈體操作
      ④更新迴圈變數
        然後,迴圈執行2~4,直到條件不成立時,跳出迴圈。

    while迴圈結構()中的運算式,運算結果可以是各種類型。但是最終都會轉為真假,轉換規則同if結構。

    var num = 0;                                                  //聲明迴圈變數    while (num < 10){                                          //判斷迴圈條件            document.write(num + "<br />");           //執行迴圈體操作                num=num+1;                                     //更新迴圈變數    }                            

   2.do-while迴圈結構 
      do-while迴圈特點:先判斷,再執行。
      do-while迴圈特點:先執行,再判斷。即使初始條件不成立,do-while迴圈也至少迴圈一次。

    var num = 10;    do{    document.write(num );/    num--;    }while(num >= 0);

  3.for迴圈結構

      1.  for迴圈有三個運算式:① 聲明迴圈變數; ② 判斷迴圈條件; ③ 更新迴圈變數
        三個運算式之間,用分號分隔
        for迴圈的三個運算式都可以省略,但是倆個分號缺一不可

      2.  for迴圈的執行特點:先判斷,再執行;與while相同。

      3  .for迴圈三個運算式,都可以有多部分組成,第二部分中的多個判斷條件用&& ||串連,第一,三部分用逗號串連。

      【迴圈控制語句】
          1. break:    跳出本層迴圈,繼續執行迴圈後面的語句。
                如果,迴圈有多層嵌套,則break只能跳出一層

          2.  continue:跳過本次迴圈剩餘的代碼,繼續執行下一次迴圈。
            ① 對於for迴圈,continue之後執行的語句,時迴圈變數更新語句i++;
            ② 對於while,do-while迴圈,continue之後執行的語句是迴圈條件判斷,
                因此,使用,這兩個迴圈時,必須將continue放到i++之後使用。否則,continue將跳過i++,導致死迴圈。


      for (var num = 1, num1= 20;  num <=  9 && num1  >=   14; num++, num1--) {        document.write(num + "<br />");    }

六.函數

    1.函數的聲明及調用
        ①.函數的聲明格式
            

function 函數名(參數1,參數2,...){    //函數體代碼    return 傳回值;}        

 


      ②函數的調用:
          ① 直接調用: 函數名(參數1的值,參數2 的值,....);
          ② 事件調用方式: 在HTML標籤中,使用事件名 = " 函數名(參數1的值,參數2 的值,....)"

<button onclick="saySth(‘blue‘,‘哈哈哈哈‘)">點擊,列印</button>

 


    2.函數的注意事項

      ①函數名必須要符合小駝峰法則:首字母小寫,之後每個單字首大寫

      ② 函數名後面的括弧中,可以有參數,也可以沒有參數,分別稱為有參函數,無參函數。

      ③聲明函數時的參數列表稱為形參列表,形式參數。(變數的名字)
            function saySth(color,str){}
       調用函數時的參數列表,稱為實參列表。實際參數(變數的賦值)
            saySth("red","換個影子");

      ④函數的形參列表個數與實參列表的個數沒有實際關係。
            函數參數的個數,取決於實參列表。
       如果,實參列表的個數,小於形參列表,則未賦值的形參,將為undefined

      ⑤函數可以有傳回值,使用return返回結果。
        調用函數時,可以使用一個變數接受函數的返回結果。
        如果,函數沒有傳回值,則接受的結果為undefined。

function fun(){return "hahah";}var num = fun();    //num = hahah    

 


    ⑥函數中變數的範圍:
        JS中只有函數才有範圍:函數範圍。
          即,函數{}中的局部變數只能在函數域中使用。而其他的{}(如:for{})中的局部變數能在{}外面使用。
          函數中,使用var聲明的變數,為局部變數,只能在函數內部訪問;
      不用var聲明的變數,為全域變數,在函數外也能訪問。
      函數的形參列表,預設為局部變數,只能在函數內部使用。

    ⑦函數的聲明與函數的調用沒有先後之分,即,可以在函式宣告之前調用函數

fun();    //在fun聲明之前調用也可以function fun(){return "hahah";}


七.匿名函數的聲明與使用

  1.聲明一個匿名函數直接賦值給某一個事件
        window.onload = function(){}

  2.使用匿名函數運算式,將匿名函數賦值給一個變數。
      聲明:var func =function(){}
      調用:func();

    注意:使用匿名函數運算式時,函數的調用語句,必須放在函式宣告語句之後!!!!(與普通函數的區別!!!)

  3.自執行函數:
    ① !function(){}();    //可以使用多種運算子開頭,但一般用!
    !function(形參列表){}(實參列表);

    ② ( function(){}() );  //使用()將函數及函數後的括弧包裹

    ③ (f unction(){} )();  //使用()只包裹函數部分

  三種寫法的特點:
    ① 使用!開頭,結構清晰,不容易混亂,推薦使用;
    ② 能夠表明匿名函數與調用的()為一個整體,官方推薦使用;
    ③ 無法表明函數與之後的()的整體性,不推薦使用。

  4.函數的內部屬性
    1. Arguments對象
      ① 作用:用於儲存調用函數時的所有實參。當我們調用函數,並用實參賦值時,實際上參數列表已經儲存到Arguments數組中,
        可以在函數中,使用Arguments[n],的形式調用。n從0開始。
      ② Argument數組的個數,取決於實參列表,與形參無關。
        但是,一旦第n個位置的形參,實參,arguments都存在時,形參將於arguments綁定,同步變化。
           (即在函數中修改形參的值,arguments也會改變。反之,亦成立)

      ③ arguments.callee()是arguments的主要屬性。表示arguments所在函數的引用地址;
        在函數裡面,可以使用arguments.callee()調用函數本身。
        在函數內部,調用函數自身的寫法,叫做遞迴。
        結構上類似do-while結構

var num = 1;function func(){            //遞迴    console.log(num);            //do,迴圈開始處    num++;                        //迴圈體操作    if(num<=4){                   //while,判斷條件        arguments.callee();        //遞    }        num--;                            //歸    console.log(num);}func();        

代碼執行順序:




遞迴分為兩部分:遞 和 歸。以遞迴調用語句為界限,可以將函數分為上下兩部分。
遞:當函數執行上半部分,遇到自身的調用語句時,繼續進入內層函數,再執行上半部分。直到執行完最內層函數。
歸: 當最內層函數執行完以後,再從最內層函數開始,逐漸執行函數的下半部分。

當最外層函數執行時,遇到自身的調用語句,會進入內層函數執行,而外層函數的後半部分暫不執行。

直到最內層函數執行完以後,在逐漸向外執行。

 

console.log(history);

JavaScript基礎語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.