什么是函數:
函數是完成某一功能的代碼段。
函數是可重復執行的代碼段。
函數方便管理和維護。
自定義一個函數:
通過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>