什么是函數(shù)
- 函數(shù)是可重復(fù)執(zhí)行的代碼塊,為了完成特定的功能。
為什么使用函數(shù)
- 因為一部分代碼使用次數(shù)或許很多,封裝起來,使用時調(diào)用即可。
tips:寫任何代碼,考慮是否某些功能是需要封裝的,或是以前封裝好的。
面向?qū)ο缶幊淌且环N編程思想,其特點:封裝、繼承、多態(tài)。
參數(shù)
參數(shù)是參與運算的變量,為了增強函數(shù)的功能性、和程序員的交互性、和函數(shù)的可擴展性。
參數(shù)分為形參和實參。
形參:形式上參與運算的變量,無實際的值。為實參占位置(可以理解為函數(shù)內(nèi)部的變量,函數(shù)外部無法訪問)。
實參:實際參與運算的變量,形參為他占位置,真是參與運算的變量。
tips:
1、把函數(shù)定義時候的參數(shù)成為形參,把調(diào)用時候傳遞的參數(shù)稱為實參;
2、實參比形參多,多余的實參被函數(shù)忽略掉不影響函數(shù)執(zhí)行;
3、實參比形參少,沒有被傳遞進來的形參的值,在函數(shù)內(nèi)表現(xiàn)為undefined;
返回值
函數(shù)程序運行后的結(jié)果,外部需要使用的時候,我們不能拿到,需要用到rutern返回運行后的結(jié)果;
函數(shù)內(nèi)部rutern返回的值就是返回值;
值得注意的是:函數(shù)使用rutern語句后,其函數(shù)會在執(zhí)行完rutern語句后停止并立即退出,也就是說rutern后面的其他代碼不會再執(zhí)行;
函數(shù)名、函數(shù)體和函數(shù)加載問題
函數(shù)名是什么
函數(shù)名 == 整個函數(shù)
function fn(){};
console.log(fn) == console.log(function fn(){});
函數(shù)的定義
具名函數(shù): function a(){};
匿名函數(shù):var a = function(){};
變量和作用域
- 變量分為:全局變量和局部變量。
全局變量:又可叫做成員變量,指哪里都能訪問到的變量;
局部變量:函數(shù)內(nèi)部的變量,只有函數(shù)內(nèi)部可以訪問到;
- 變量提升
JavaScript的函數(shù)作用是指在函數(shù)內(nèi)聲明的所有變量在函數(shù)體內(nèi)始終是有定義的,也就是說變量在聲明之前已經(jīng)可用,所有這特性稱為聲明提前(hoisting)
var scope = 'global';
function f(){
console.log(scope);
var scope = 'local';
console.log(scope);
}
// 以上代碼在js進行解析的時候會變成以下代碼
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ù)名就等于整個函數(shù);
參數(shù)相當(dāng)于局部變量;
就近原則使用變量;
兩個平級的函數(shù)中的變量不會相互影響(可以使用同樣的形參名);