函數的概述 函數 實際就是多行代碼的抽取(多行代碼會構成特定的功能)(方法) 函數的優點 減少冗餘代碼(重覆的代碼放在函數裡面 在需要的時候調用)函數封裝(特定的一些代碼使用函數來包起來), 提高了代碼的可維護性及可閱讀性。 函數的分類 系統函數 window裡面的所有函數都屬於系統函數 (cons ...
函數的概述
函數 實際就是多行代碼的抽取(多行代碼會構成特定的功能)(方法)
函數的優點
減少冗餘代碼(重覆的代碼放在函數裡面 在需要的時候調用)函數封裝(特定的一些代碼使用函數來包起來),
提高了代碼的可維護性及可閱讀性。
函數的分類
-
-
內置函數 所有的內置對象裡面的函數 都叫內置函數 (Math.pow())
-
內置函數和系統函數我們更關註於他的使用 自定義函數(定義以及使用)
使用function關鍵詞 定義匿名函數(沒有名字的函數)
function(形參(可以省略的 可以有多個)){ 函數體(代碼) } //直接調用 讓別人(事件)去調用(自動調用) (function(){ console.log('匿名函數') })()
匿名函數 (聲明比較少 他沒有復用價值)
function 函數名(形參,形參...){ 函數體(代碼) } //聲明 具名函數(第一種) function sayHello(){ console.log('hello') } sayHello() //傳遞參數 function sayHello1(name,age){ //形參是形容的參數 console.log('hello'+name+age) } sayHello1('李四') //傳進的是實參 根據你要的參數個數來傳遞對應的參數個數 //調用 // sayHi() //報錯 // console.log(sayHi); undefined //具名函數的變種聲明 (第二種) var sayHi = function(){ console.log('hi') } sayHi()
var 函數名 = new Function('形參,形參1','函數體') //定義 var sayBye = new Function('console.log("bye bye!!")') //調用 sayBye() //傳參 var sayBye = new Function('username','console.log("bye bye!!"+username)') //調用 sayBye('李四')
函數的執行過程
1.把對應的開闢的function記憶體裡面的代碼塊丟給方法棧(執行棧)去執行
2.執行棧就會自動取執行對應的方法 執行完返回對應的結果
3.當前結果返回完畢以後 對應的執行棧裡面的記憶體空間要進行回收(GC)將這個記憶體空間銷毀
函數的作用域
當前的作用域內沒有找到對應的變數就會向上去尋找 而這個過程構成的鏈式結構稱為作用域鏈
var a = 20 function fn(){ console.log(a);//undefined 沒有var關鍵詞就20 var a = 10 if(10>9){ console.log(a);//undefined 沒有var關鍵詞就10 var a = 30 if(5>4){ console.log(a);//undefined 沒有var關鍵詞就30 var a = 40 if(a>10){ console.log(a);//40 } } } } fn()