1.普通函式
語法:
function 函式名(){
陳述句塊
}
2.帶參函式
語法:
function 函式名(引數串列){
陳述句塊
}
3.帶回傳值的函式
語法:
function 函式名(引數串列){
陳述句塊;
return 值;
}
允許通過一個變數來接受呼叫函式后的回傳值
var 變數名 = 函式名(實參串列)
練習:
定義一個可以接受三個Number引數的方法,在該方法中,計算并回傳最大的數值
<script type="text/javascript">
function getMax(a,b,c){
var max = a;
b > max && (max = b);
c > max && (max = c);
return max;
}
</script>
<button type="button" onclick="console.log(getMax(20,45,88))">最大值計算</button>
4.作用域
1.定義:變數和函式的可訪問范圍,主要有兩類
(1)函式作用域
只在定義的函式內允許訪問變數和函式
(2)全域作用域
一經定義,在任何位置處都能訪問
2.函式作用域中的變數
在某個函式中宣告的變數,就是函式作用域中的變數,也可以稱為 “區域變數”
3.全域作用域中的變數
一經宣告,任何位置都能使用,也稱為 “全域變數”
宣告方式:
(1)將變數宣告在最外層,所有的function之外
(2)宣告變數時不使用 var 關鍵字,一律是全域變數,但有風險 (當定義在函式中不使用var關鍵字宣告全域變數時,只有此函式運行過一次后才宣告成功)
4.宣告提前
JS程式在正式執行前,會將所有var宣告的變數以及function宣告的函式,預讀到所在作用域的頂端,但賦值還保留在原位置
function show(){ console.log(num); //列印undefined var num = 10; console.log(num); } function show(){ console.log(num); //報錯 }
5.值傳遞
function change(a,b){ a ^= b; b ^= a; a ^= b; } function testchange(){ var a = 15; var b = 18; console.log("呼叫前:"); console.log(a,b); change(a,b); console.log("呼叫后:"); console.log(a,b); }
運行結果


change() 函式傳過去的相當于副本,所以不會影響testchange() 函式中的內容
建議:基本資料型別的資料在做引數傳遞時,盡量不要在函式中修改,因為即使修改了,也不會影響原資料
5. 區域函式
將函式宣告在某個函式內
6.全域函式
- paseInt()
- parseFloat()
- Number()
- isNaN()
- encodeURI() :對統一資源識別符號格式的字串進行編碼,并回傳編碼后的字串 將多位元組的字符,編譯成多個單位元組的字符,
- decodeURI() :對已編碼的URI進行解碼
- encodeURIComponent() 在encodeURI基礎上,允許特殊符號(:,/,)進行編碼
- decodeURIComponent()
- eval() 計算并執行以字串方式表示的JS代碼
7.遞回呼叫
1.遞回指的是在一個函式中,有一次的呼叫了自己
2.遞回的實作
(1)邊界條件
(2)遞回前進 - 繼續調自己
(3)遞回回傳 - 向上回傳資料
3.解決問題
計算某個數字的階乘
//求n的階乘
function f(n){
//判斷是否到達邊界條件,如果達到,則回傳1
if(n == 1){
return 1;
}else{
return n * f(n-1)
}
}
//通過條件運算子改版
function f(n){
return n== 1 ? 1 : n * f(n-1);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/140012.html
標籤:其他
下一篇:JS函式
