什麼是函數: 函數是完成某一功能的代碼段。 函數是可重覆執行的代碼段。 函數方便管理和維護。 自定義一個函數: 通過function關鍵字來定義一個函數。 語法: function 函數名稱([可以帶參數,也可以不帶參數,可以帶一個參數,可以帶多個參數]){ 執行的代碼段; return返回值; }
什麼是函數:
函數是完成某一功能的代碼段。
函數是可重覆執行的代碼段。
函數方便管理和維護。
自定義一個函數:
通過function關鍵字來定義一個函數。
語法:
function 函數名稱([可以帶參數,也可以不帶參數,可以帶一個參數,可以帶多個參數]){
執行的代碼段;
return返回值;
}
1 <script> 2 alert(demo()) //這個函數是一個全局函數,調用函數的時候可以在函數聲明前調用,或者函數聲明後調用都可以 3 function demo(){ //通過function關鍵字來聲明一個函數 4 alert("this is a function") //alert()是執行的一個代碼段 5 return 1 //return是這個函數的返回值 6 } 7 </script>
註意:
涵數名稱不要包含特殊字元。
函數名字名稱最好含義明確。
函數名稱最好遵循駝峰標記法或者下劃線法。
函數名稱嚴格區分大小寫。
涵數名稱如果重覆會產生覆蓋。此例有演示代碼:
1 <script> 2 //同名函數會被第最後一個覆蓋 3 function demo(){ 4 alert("這是第一個demo1") 5 } 6 function demo(){ 7 alert("這是第二個demo2") 8 } 9 demo() //=>輸出結果為 這是第二個demo2 10 </script>
函數可以有參數也可以沒有參數,可以有一個參數也可以有多個參數
參數的註意:
如果定義了參數,在調用函數時候沒有傳值,預設設置為undefined 此處有演示代碼
1 <script> 2 function demo(num1,num2){ 3 return num1+num2 //num1和num2進行了隱式轉換,undefined轉換成number類型,結果為NaN,兩個NaN相加為NaN 4 } 5 alert(demo()) //=>返回值為NaN 6 </script>
如果在調 用函數時如果傳遞參數超過了定義時的參數,js將會預設忽略掉多餘的參數 此處有演示代碼塊
1 <script> 2 function demo(num1,num2){ 3 return num1+num2 4 } 5 alert(demo(1,2,3,4,5)) //=>3 因為多餘的參數將會被js自動忽略 6 </script>
js中不能直接寫預設值,可以通過arguments對象來實現預設值效果,此處有演示代碼:
1 <script> 2 //如果在參數里直接設置值,結果會報錯,比如(num1=1,num2=2),這種情況下就會報錯 3 function demo(num1,num2) { 4 /* num1= num1 != undefined?num1:1; //這個是用三元運算符來設置預設參數 5 num2= num2 != undefined?num2:3;*/ 6 num1 = num1 || 1 //當如果調用函數傳參的話則使用傳參的參數,否則用後面的預設參數 7 num2 = num2 || 3 8 return num1+num2 9 } 10 alert(demo(1,4)) //=>5 這個是設置了參數 11 alert(demo()) //=>4 這個是用了預設設置的參數 12 </script>
函數通過return加返回值,如果沒有return,預設返回undefined,此處有演示代碼:
1 <script> 2 function demo(){ 3 alert("這個是一個有返回值的函數,可以返回所有原始類型的值") 4 return "如果return後面再做什麼操作都沒起任何效果,遇到第一個return則直接返回值" 5 alert("沒有任何效果") //第一個return後面的執行語句和 6 return false //返回值都不起任何作用 7 } 8 alert(demo()) //調用時,第一個先彈出alert語句,然後再返彈出返回這個函數的值 9 </script>