函數:簡單來說就是將程式中一段代碼封裝,再起一個名字。 步驟: 1.封裝 function 函數名(參數列表){ 函數體; return結果; } 解釋: 參數:接收傳入函數的數據,函數執行是必要的數據。參數其實就是一個普通變數,使用時與變數完全一致。當函數執行時,必需某些數據,那麼就需要定義參數, ...
函數:簡單來說就是將程式中一段代碼封裝,再起一個名字。
步驟:
1.封裝
function 函數名(參數列表){
函數體;
return結果;
}
解釋:
參數:接收傳入函數的數據,函數執行是必要的數據。參數其實就是一個普通變數,使用時與變數完全一致。當函數執行時,必需某些數據,那麼就需要定義參數,告訴調用者函數必需的數據。作用:告訴調用者函數執行時必需的數據,使函數更加靈活。
函數體:函數結構中封裝的解決一類任務的代碼段。
return:退出函數順便返回結果!作用:返回函數執行的結果;中止並退出函數。
2.調用
JS引擎會按照封裝的代碼去執行預定的任務。
調用的方式:函數名(實際參與任務的參數列表)
3.作用域:變數的可用範圍!
1.局部作用域:函數範圍內,變數只能在其定義的函數內部被使用。
2.全局作用域:在程式任何位置都可以使用的變數。
3.塊級作用域
註意:只有用var聲明的變數會被放在當前作用域;沒有用var聲明,直接賦值產生的變數,預設都會在全局創建。
註釋:如果給一個未聲明的變數賦值,會自動在全局創建這個變數並賦值;如果使用一個未聲明的變數,報錯:ReferenceError;
4.聲明提前
在程式開始執行之前,會將var聲明的變數和function聲明的函數,提前到當前作用域中的頂部集中創建。賦值留著原地。
缺點:擾亂程式正常執行的順序;
解決:
1.建議將所有變數和函數集中創建在當前作用域底部。
2.可以使用Let代替var。
3.函數:第二種創建方式,不會被聲明提前。eg:var fun=function () {}
按值傳遞:對於原始類型的數據,其值保存在變數本地。當使用此變數參與運算時,只是將變數中的值複製到一個副本交給程式使用,不修改原值。對於引用類型的數據,值無法保存在本地,變數中保存著對數據的引用(地址)。在賦值操作時,是將數據的地址傳遞給新變數。當新變數修改數據時,原變數也會被影響。
完結!