函數的定義 1.函數的聲明 function 函數名(){ } 2.函數表達式 var aa=function(){ } 函數的調用 1.函數名() 函數分類:方式一: 有名函數 匿名函數(匿名函數無法直接調用,如果想要調用,需要使用匿名函數的自調用) ( function(){ alert(); ...
函數的定義 1.函數的聲明 function 函數名(){ } 2.函數表達式 var aa=function(){ } 函數的調用 1.函數名() 函數分類:方式一: 有名函數 匿名函數(匿名函數無法直接調用,如果想要調用,需要使用匿名函數的自調用) ( function(){ alert(); })(); 方式二: 內置函數:官方提供 自定義函數 函數的參數(形參 實參) 參數是一一對應的 實參>形參 --多餘實參被省去 實參<形參 --多餘形參為undefined arguments 實參集合列表 類數組 有length長度 有下標 但是沒有數組方法,適合形參個數不確定的情況 全局變數:在函數外部,script下 定義的變數 局部變數: 在函數中聲明的變數,就是局部變數 不使用var聲明的變數是全局變數,不推薦使用。 變數退出作用域之後會銷毀,全局變數關閉網頁或瀏覽器才會銷毀 return 如果函數沒有顯示的使用 return語句 ,那麼函數有預設的返回值:undefined 如果函數使用 return語句,那麼跟再return後面的值,就成了函數的返回值 如果函數使用 return語句,但是return後面沒有任何值,那麼函數的返回值也是:undefined 函數使用return語句後,這個函數會在執行完 return 語句之後停止並立即退出,也就是說return後面的所有其他代碼都不會再執行。 推薦的做法是要麼讓函數始終都返回一個值,要麼永遠都不要返回值。 函數的作用域與預解析 例如:谷歌瀏覽器 html css: 渲染引擎webkit js解析器: v8引擎 js解析器內部 解讀代碼的時候分兩步:1.查找聲明的變數和函數 2.執行代碼 預解析 js解析器執行js代碼的時候,分為兩個過程: 預解析過程和代碼執行過程 預解析過程: 1. 把變數的聲明提升到當前作用域的最前面,只會提升聲明,不會提升賦值。 2. 把函數的聲明提升到當前作用域的最前面,只會提升聲明,不會提升調用。 3. 在提升的變數和函數中,如果名稱有衝突,則函數覆蓋變數,後者覆蓋前者