函數基礎
阿新 • • 發佈:2017-07-14
使用 語句 script 下標 作用域 fun 參數 一個 變量 函數的定義
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. 在提升的變量和函數中,如果名稱有沖突,則函數覆蓋變量,後者覆蓋前者
函數基礎