js基礎知識筆記二
阿新 • • 發佈:2021-08-13
函式基礎知識
1,函式的基本格式
①函式宣告:
`function 方法名/函式的名字(){
//要執行的程式碼
}`
②函式呼叫:
`//函式宣告
function fn(){
console.log(1);
}
//函式的呼叫
fn();`
注意:在呼叫時,如果沒有加‘()’,會返回函式的方法體。
③函式引數:
`function func(形參1,形參2){ //函式執行程式碼 } func(實參1,實參2);//呼叫時傳參` 情況一:函式的實參和形參的數量應該相同,但是JS並沒有這樣的要求。可以不相同 情況二:如果函式的實引數量少於形引數量,那麼多出來的形參會預設會undefined 情況三:如果函式實引數量多餘形引數量,那麼多出來的實參就不能通過形參訪問。函式忽略掉多餘的實參。
④函式返回值:
四種情況: 情況一:如果函式中沒有return關鍵字,那麼函式有預設的返回值undefined (如下) `<script> function fn(){ } console.log(fn()); </script>` 情況二:如果函式中有return關鍵字,那麼這個關鍵字後面的程式碼是不會執行的 (如下) `<script> function fn(){ return '我被返回了'; alert('我是不會被執行的'); } console.log(fn()); </script>` 情況三:如果函式中有retruen關鍵字,這個關鍵字後面沒有值,那麼這個函式有返回值是undefined (如下) `<script> function fn(){ return ; } console.log(fn()); </script>` 情況四:如果函式中有return關鍵字,這個關鍵字後面有值,那麼這個值就是這個函式的返回值。 (如下) `<script> function fn(){ return '前端yyds'; } console.log(fn()); </script>`
2,函式型別
①匿名函式(也可以叫做沒有名字的函式)==》實際開發中用的相對較多
`var a = function(){
console.log('前端開發');
}
a();`
②具名函式
`function fn(){
console.log("一個喜歡畫畫的前端小猿人");
}`
③立即執行函式(又叫做IIFE)==》相比來說開發用的多,用於多個函式的封裝
`(function (用於接收實參){
console.log("我是IIFE函式");
})(也可以傳實參)`
關於立即執行函式的解釋
IIFE作用
1,防止外部名稱空間汙染
2,隱藏內部程式碼暴露介面
3,對專案的初始化,只執行一次
IIFE特點
1,匿名函式自呼叫是在定義的同時執行函式
2,匿名函式自呼叫只能執行一次
如果需要一個函式可以執行多次,這個函式必須是有名函式
如果函式沒有名字要想執行必須是自呼叫,但是隻能執行一次
3、匿名函式自呼叫,函式整體不會發生預解析,但是函式內部執行程式碼是要去預解析
3,函式的遞迴
函式的遞迴呼叫,就是函式在內部自己調自己
函式的遞迴呼叫是一把雙刃劍,如果設計的好,可以幫我們簡單的處理事情,如果設計不好就是災難
函式的遞迴要想設計好必須有兩個條件
- 必須有一個明顯的結束條件,不能一直遞迴下去
- 每一次呼叫都要有一個趨近結束條件的趨勢
情況一(設計不好的遞迴):
`<script>
function fn() {
console.log('設計不好的遞迴');
fn();
}
fn();
</script>`
情況二( 防止遞迴名字被修改):
`<script>
var n = 0;
function fn() {
if (n >= 10) {
return;
}
n++;
console.log('遞迴部分');
//fn =1;
//fn();
arguments.callee();
}
fn();
</script>`
遞迴的小案例:
實現10的階乘
`function result(n){
if(n <= 1){
return 1;
}
return n * getFactorial(n - 1);
}
console.log(result(10));`