什么是函數(shù)
- 函數(shù)是可重復(fù)執(zhí)行的代碼塊,為了完成特定的功能。
為什么使用函數(shù)
- 因?yàn)橐徊糠执a使用次數(shù)或許很多撕予,封裝起來(lái)擎椰,使用時(shí)調(diào)用即可。
tips:寫(xiě)任何代碼,考慮是否某些功能是需要封裝的,或是以前封裝好的。
面向?qū)ο缶幊淌且环N編程思想,其特點(diǎn):封裝夺颤、繼承、多態(tài)胁勺。
參數(shù)
參數(shù)是參與運(yùn)算的變量世澜,為了增強(qiáng)函數(shù)的功能性、和程序員的交互性署穗、和函數(shù)的可擴(kuò)展性寥裂。
參數(shù)分為形參和實(shí)參。
形參:形式上參與運(yùn)算的變量案疲,無(wú)實(shí)際的值封恰。為實(shí)參占位置(可以理解為函數(shù)內(nèi)部的變量,函數(shù)外部無(wú)法訪問(wèn))褐啡。
實(shí)參:實(shí)際參與運(yùn)算的變量诺舔,形參為他占位置,真是參與運(yùn)算的變量。
tips:
1低飒、把函數(shù)定義時(shí)候的參數(shù)成為形參许昨,把調(diào)用時(shí)候傳遞的參數(shù)稱為實(shí)參;
2逸嘀、實(shí)參比形參多车要,多余的實(shí)參被函數(shù)忽略掉不影響函數(shù)執(zhí)行;
3崭倘、實(shí)參比形參少,沒(méi)有被傳遞進(jìn)來(lái)的形參的值类垫,在函數(shù)內(nèi)表現(xiàn)為undefined;
返回值
函數(shù)程序運(yùn)行后的結(jié)果司光,外部需要使用的時(shí)候,我們不能拿到悉患,需要用到rutern返回運(yùn)行后的結(jié)果残家;
函數(shù)內(nèi)部rutern返回的值就是返回值;
值得注意的是:函數(shù)使用rutern語(yǔ)句后售躁,其函數(shù)會(huì)在執(zhí)行完rutern語(yǔ)句后停止并立即退出坞淮,也就是說(shuō)rutern后面的其他代碼不會(huì)再執(zhí)行;
函數(shù)名陪捷、函數(shù)體和函數(shù)加載問(wèn)題
函數(shù)名是什么
函數(shù)名 == 整個(gè)函數(shù)
function fn(){};
console.log(fn) == console.log(function fn(){});
函數(shù)的定義
具名函數(shù): function a(){};
匿名函數(shù):var a = function(){};
變量和作用域
- 變量分為:全局變量和局部變量回窘。
全局變量:又可叫做成員變量,指哪里都能訪問(wèn)到的變量市袖;
局部變量:函數(shù)內(nèi)部的變量啡直,只有函數(shù)內(nèi)部可以訪問(wèn)到;
- 變量提升
JavaScript的函數(shù)作用是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是有定義的苍碟,也就是說(shuō)變量在聲明之前已經(jīng)可用酒觅,所有這特性稱為聲明提前(hoisting)
var scope = 'global';
function f(){
console.log(scope);
var scope = 'local';
console.log(scope);
}
// 以上代碼在js進(jìn)行解析的時(shí)候會(huì)變成以下代碼
function f(){
var scope;
console.log(scope);
scope = 'local';
console.log(scope);
}
f();
- 函數(shù)聲明提升
var getName = function(){
console.log(2);
}
function getName (){
console.log(1);
}
getName();
總結(jié):
函數(shù)不調(diào)用不執(zhí)行;
函數(shù)名就等于整個(gè)函數(shù)微峰;
參數(shù)相當(dāng)于局部變量舷丹;
就近原則使用變量;
兩個(gè)平級(jí)的函數(shù)中的變量不會(huì)相互影響(可以使用同樣的形參名)蜓肆;