文章出處
文章列表
比如有下面這么一段代碼
var log = console.log;
console.log = function(){
log("準備開始執行log方法");
log.apply(this,arguments);
log("log方法執行結束");
};
console.log("js"); // 準備開始執行log方法 js log方法執行結束
這段代碼所做的事就是將console.log重寫,但從執行的角度上看,這里無非就是在原有的console.log基礎上添加了幾條語句,再來看下面這段代碼:
function fn1(){
console.log("fn1");
}
function fn2(){
console.log("fn2");
}
function main(){
fn1();
fn2();
}
main(); // fn1 fn2
從執行角度上看,它就像下面這樣:
function main(){
console.log("fn1");
console.log("fn2");
}
main(); // fn1 fn2
最終它成了這樣:
console.log("fn1");
console.log("fn2");
舉這些例子我想說的是,不管你寫的代碼有多復雜,程序始終還是一步一步的執行,除非是多線程,最大的區別就是它們有了作用域。
那函數的意義是什么?
組合代碼,重用代碼,隔離作用域
- 組合代碼的意義在于,當執行某個方法時,可以去執行多條語句。
- 很大原因能重用代碼是因為有了組合代碼。
- 因為代碼不是全部寫在一個空間里,因此才有了作用域的可能,但不一定得是函數。
由此可以看出,不管代碼文件有多大,有多少個代碼塊,程序無非就是多執行一些語句罷了。
寫的有些凌亂,勿見笑
文章列表
全站熱搜