Unit03: 函數 、 分支結構_1

1.函數:面試

       封裝一個專門任務的步驟清單的代碼段函數

       起一個任務名編碼

 

       when:只要定義一個專門的任務,都要封裝一個函數;url

      

       使用函數:聲明 定義 調用;3d

 

       如何定義一個函數:code

       function 函數名([參數列表]){對象

              函數體:代碼段blog

              return 返回值utf-8

       }作用域

 

       如何調用函數:var 返回值=函數名(參數列表);或 函數名();***********

 

       一次定義,反覆使用,代碼重用;

       一次修改,到處生效;

 

       -- 函數的參數:接受「傳入函數內」的數據(變量);

                   when:若是一個函數必須某些數據才能正常執行;

                        參數可以讓函數變得更靈活

                   定義: function 函數名(變量1,變量2,變量3...){};*********

                   調用: 函數名(變量1,變量2,變量3...);

 

       -- 返回值:方法調用後返回的結果;

              function 函數名([參數列表]){

                     函數體:代碼段

                     return 要返回的數據;

              }

 

          return後不加數據,單獨使用,表示退出函數執行;

          函數僅負責返回值,不保存值;獲取返回值:var 返回值=函數名(參數列表);document.write(返回值); **********

 

********** 函數是引用類型的對象;函數名是指向函數對象的變量;(函數名存在window,代碼段存在window外的一個地址;)

         

          函數的定義和調用過程:

              1.window中建立函數名變量;

              2.window外建立了函數定義的對象-->封裝函數的定義

                       函數名變量中保存了指向函數對象的地址

              3.調用時,建立局部變量:2種;

              4.調用過程當中,若是局部有,就不用全局的;

                          若是局部沒有,纔會用全局的;

                          若是全局也沒有,會報錯;

              5.調用結束後,釋放全部全局變量!

 

2.變量做用域:

       一個變量的可用範圍;

       -- 全局做用域:一個變量能夠在程序的任何位置被訪問。

       -- 函數做用域:一個變量僅能在函數調用時,內部被訪問。

 

       全局變量:定義在全局做用域中的變量;2種;

              1.直接在任何函數外定義的變量;

                全局變量都屬於window--全局對象;

              2.不管在任何位置,爲沒有var聲明過的變量賦值;自動建立同名全局變量;

       局部變量:定義在函數做用域中的變量;2種;

              1.函數定義內部聲明的變量;

              2.參數變量也是局部變量;

 

1.聲明提早:***************

       在程序執行前或函數被調用前;

       將var聲明的變量和function聲明的函數

       提早到「當前做用域」的頂部集中建立;

 

       僅聲明提早,賦值留在原地;***************

 

2.按值傳遞:

       將實參變量的值複製一份副本給方法的形參變量;

 

       將 全局變量 「當參數」傳給函數時,是複製了 全局變量 的值,函數內的計算不會改變 全局變量;***********

       若是函數沒有參數,用了 全局變量 計算,就會「改變全局變量的值」。

       (demo4);

 

3.全局函數:ES標準中,已經定義好的,開發者直接調用的函數;

       - parseInt(str)

       - paeseFloat(str)

       - isNaN(num)

       - isFinite :判斷一個數字是否有限;

              無窮大:Infinity; 4/0;

 

       - 編碼,解碼 (demo5)

         編碼:將url中的非法字符,改成合法字符的

         - encodeURIComponent();

                     /s?word=%E5%BC%AO

                               張

                               utf-8格式編碼

                               在utf-8一個漢字佔3字節;

                     url中不容許出現多字節字符!(亂碼)

                     用utf-8格式編碼,將url中多字節字符,轉爲單字節;

 

                     url中不容許參數值中出現保留字:如:/

 

         解碼:將url中對已編碼的標符解碼,恢復原文;

         - decodeURIComponent();

                 

       - eavl:計算並執行以字符串表示的表達式的值:如:算算式,解釋並執行代碼;(demo5)

 

4.分支結構:

       程序結構分3大類:

           1.順序:程序默認由上向下執行;

           2.分支:根據條件判斷的結果,有選擇的執行不一樣代碼;3種;(demo6)

 

              -- if 結構:1件事 知足條件就執行,不然就不執行;

                 語法:if(條件){

                            知足條件才執行的代碼;

                       }

 

              -- if...else... 結構:2件事 知足條件就執行if中的代碼段,不知足條件就執行else中的代碼段;

                 語法:if(條件){

                            知足條件才執行的代碼;

                       }else{

                            不知足條件就執行else中的代碼段;

                       }

 

              -- else if 結構:多件事,根據條件, 多選一執行;

                 語法:if(條件1){

                            知足條件1才執行的代碼;

                       }else if(條件2){

                            知足條件2才執行的代碼;

                       }...else{

                            以前條件都不知足就執行else中的代碼段;

                       }

 

                       只要一個條件知足,執行完就退出,後面的不執行;*************

 

              分支結構 VS 三目/短路 ****************** (demo7)

              若是隻是返回值 -->三目/短路

              若是操做複雜   -->分支結構

 

 

           3.循環:程序能夠反覆執行同一代碼段,到達臨界時退出;

 

       需求:

       - Input

       - Process

       - Output

分支結構:

1.一個條件,一件事知足就作,不忙足不做:短路、if結構

Demo:

Var a=80,b=90;

a<b&&(a+=b,b=a-b,a-=b);//a=90,b=80,

2.一個條件兩件事,二選一:三目、if else、||

3.一個條件多件事 多選一: 三目、switch case(條件全等狀況下)

4.操做複雜,且條件包含不等:if elseif

用最短的代碼作更多的事情;

面試題:

function Human(){

return Human;              //構造函數結尾return一個對象

}                                                      ||

var boy=new Human();//new不在建立對象,等效於Human()

var man=Human();

console.log(boy===man);

 //true

相關文章
相關標籤/搜索