在進行編程時,必免不了要碰到複雜的功能。初學者最怕複雜的功能,因為不能夠很好的進行功能邊界劃分,只能一大串if、迴圈加case堆疊在一起,結果出來的程式自己看著暈,別人看著更暈。好程式不是寫給computer的,而是寫給human的。遇到複雜功能,應該想著把它簡化、組件化,把小功能封裝成小工具,小功能塊可以任意的組合得到千變萬化的複雜功能。function就可以協助我們把功能進行封裝。那什麼是封裝呢。要我說,只要把具體實現給打包,對外提供調用介面那就是封裝,方法也好、類也好就做了這些事。
javascript中的function可以用來建立方法、也可以用來建立類,實際上我們可以認為是用function來類比出的類(說到類一般都會要去瞭解閉包的知識)。還是先看一下方法吧。
javascript函數分為有名函數、匿名函數和在匿名函數基礎上延伸出來的立即執行函數。
普通函數就是用function直接聲明的有名函數。
function Hello() {
alert("hello , everybody!");
};
Hello();
function SayHelloTo(somebody) {
alert("hello , " + somebody + "!");
};
SayHelloTo("張三");
上面分別建立了Hello和SayHelloTo方法。Hello不帶有參數,直接通過Hello()來完成調用。SayHelloTo方法帶有一個參數,向誰問候時需要知道是在問候誰。在調用SayHelloTo(“張三”)時要傳入參數。這些代碼和java、C#都沒有什麼太大區別。在方法重載上卻有較大改變,javascript本身並不支援什麼重載,一個方法名就對應一個方法。如果強制的寫出多個同名方法,其實會出現先寫的方法被覆蓋掉的情況。
function Hello() {
alert("hello , everybody!");
};
Hello();
function Hello(somebody) {
alert("hello , " + somebody + "!");
};
Hello("張三");