? 函數(shù)由數(shù)學中定義中引申來仁连。
? 函數(shù)就是玷禽,一個功能對應的所有語句的集合。
? 函數(shù)關(guān)鍵字:function
? 函數(shù)不能定義在循環(huán)屏歹、分支等語句中钠四。
? 語法:
function 函數(shù)名(參數(shù)1柔昼,參數(shù)2....) {
函數(shù)體;
// JavaScript語句
}
函數(shù)名();//調(diào)用函數(shù)執(zhí)行狭握。
// 標識符:變量名堵幽、函數(shù)名拟淮、屬性名干茉、類名、參數(shù)名很泊。
// 必須以字母角虫、下劃線、或者$開頭委造,后面可以跟著數(shù)字戳鹅、字母唧领、下劃線
代碼:
// 第一: 基礎(chǔ)函數(shù)定義
// 函數(shù)定義可以放在函數(shù)調(diào)用之前和之后都可以磺芭。
// 函數(shù)的關(guān)鍵字:function
function add() {
// 函數(shù)體
console.log('my first function!');
}
// 函數(shù)的調(diào)用語句灸姊。
add();
// 第二:帶參數(shù)的函數(shù)
// 定義一個函數(shù),實現(xiàn)求兩個數(shù)的乘積
function mult(a, b) { // a \ b 形參隶债。
// a * b;
console.log(a * b);
return a * b;// 把 a 和 b 的相乘=結(jié)果返回到函數(shù)調(diào)用者的地方腾它。
}
// 函數(shù)返回的結(jié)果: 直接賦值給了變量 t
// 2 \4 是實際傳遞的參數(shù),實參死讹。
var t = mult(2, 4); // 執(zhí)行 mult 函數(shù)瞒滴。給函數(shù)體傳遞 2 和 4 兩個參數(shù)。
console.log('t = ' + t);
1.函數(shù)的封裝
?計算1到n的和赞警,可能用到很多次妓忍,每寫一次都要重復嗎?
function sumNum(n) {
var i = 1, result = 0;
if( n && n >= 1){
while( i <= n) {
result += i;
}
}
return result;//返回結(jié)果
}//能改進一下嗎仅颇?
函數(shù)調(diào)用:
sumNum(20);//自動返回result,以后直接拿來用就可以了碘举。
2.return子句
? return標識函數(shù)的結(jié)束忘瓦。
? 當程序遇到return時,函數(shù)立即結(jié)束并返回相應的值引颈。否則函數(shù)執(zhí)行到}結(jié)束耕皮。
? 如果函數(shù)沒有任何的返回值,JavaScript會默認返回undefined
3.函數(shù)的參數(shù)
形參和實參匹配傳遞
形參就是:函數(shù)定義的參數(shù)蝙场。
實參:就是函數(shù)執(zhí)行傳遞的參數(shù)凌停。
形參和實參個數(shù)不匹配的時候
優(yōu)先從左向右進行匹配
實參個數(shù)可以少于形參,也可以多于形參
所有的參數(shù)都會放到 arguments
4.函數(shù)練習
1.給一個數(shù)字售滤,返回相應的星期罚拟。
2:星期二 ‘sss'=> 不是星期的格式 getWeekName(3);
2.用函數(shù)實現(xiàn)給一個整數(shù)n,返回從1到n的和完箩。
3.給定一個整數(shù)n(n>=3)赐俗,實現(xiàn)求斐波那契數(shù)列f(n) . 4.給定一個整數(shù)n(n>=2),求n的階乘
5.匿名函數(shù)
匿名函數(shù)就是沒有函數(shù)名的函數(shù)。一般會把匿名函數(shù)賦值一個變量進行使用弊知,或者匿名函數(shù)
聲明完了后立即調(diào)用自己阻逮。
匿名函數(shù)可以作為一個變量來使用。
匿名還是可以作為一個參數(shù)進行傳遞秩彤。
// 匿名函數(shù)
var f = function(a) {
return a *a;
};
// 因為我們用 var 聲明的一個變量 f叔扼,f 的類型是 function
// f 變量跟其他變量一樣使用,可以作為其他函數(shù)的參數(shù)使用漫雷。
console.log(typeof f); // => function
console.log(f(3));
console.log(typeof f2);
console.log(f2(9));
// 函數(shù)的聲明
function f2(a) {
return a * a;
}
// 區(qū)別: 變量聲明的函數(shù)(匿名函數(shù))不能進行函數(shù)提升瓜富。
6.函數(shù)練習
// 實現(xiàn) 1 到 n 的和。
function sum(n) {
// 實現(xiàn) 1 到 n 的計算
// -9, 0 ==0 'ssss' "0" == 0 null !=0 undefined != 0 false ..
// 如果用戶傳來的數(shù)據(jù)不是數(shù)字類型:返回 NaN
// 如果用戶傳來的數(shù)據(jù)不是大于 1 的數(shù)字:返回 0降盹;
if( typeof(n) != 'number') {
return NaN; // 直接返回 NaN食呻。如果函數(shù)中執(zhí)行遇到了 return語句,函數(shù)立即結(jié)束。
}
if( n < 1 ) {
// return; // 直接寫 return 和沒有返回值的函數(shù)仅胞,都會返回一
個默認的 undefined
return 0;
}
// 大于 1 的情況下
var i = 1, result = 0;
while( i <= n ) {
result += i;
i++;
}
return result;// 把計算的和返回每辟。
}
var t = sum(7); // => 1+ 2+ 3+..7
console.log(t);