函數(shù)基本
1.總體說(shuō)明
- 函數(shù)是對(duì)象蹭睡,可以動(dòng)態(tài)創(chuàng)建衍菱,可以擴(kuò)展,可作為參數(shù)和返回結(jié)果肩豁,可以擁有屬性和方法
- 函數(shù)提供作用域脊串,代碼塊不提供
2.函數(shù)聲明
- 命名函數(shù)表達(dá)式
var funcName = function funcName(){
//TODO
};
- 匿名函數(shù)表達(dá)式
var funcName = function(){
//TODO
};
- 函數(shù)聲明
function funcName(){
//TODO
}
【說(shuō)明】
- 命名函數(shù)表達(dá)式和匿名函數(shù)表達(dá)式都必須以分號(hào)結(jié)束
- 函數(shù)聲明不能用來(lái)分配變量和屬性,只能在 函數(shù)體內(nèi)部 或者 全局空間中使用
3.函數(shù)的命名屬性
函數(shù)默認(rèn)具有name屬性清钥,三種聲明下:
- 命名函數(shù)表達(dá)式: name為funcName (一般變量和函數(shù)名相同琼锋,否則IE不能正確實(shí)現(xiàn))
- 匿名函數(shù)表達(dá)式: 空字符串(其他瀏覽器)或者undefined(IE瀏覽器)
- 函數(shù)聲明: name為funcName
4.函數(shù)提升(hoisting)
- 對(duì)于所有變量,在函數(shù)體的任何地方進(jìn)行聲明祟昭,都會(huì)被提升到函數(shù)頂部
- 函數(shù)聲明會(huì)將整個(gè)函數(shù)在域內(nèi)提升
function region(){
funcHoist(); //執(zhí)行函數(shù)
//函數(shù)聲明
function funcHoist(){
//TODO
}
}
- 函數(shù)表達(dá)式會(huì)將變量名提升缕坎,但函數(shù)本身不提升
function region(){
funcNoHoist(); //報(bào)錯(cuò),類(lèi)型為undefined
//函數(shù)聲明
var funcNoHoist = function(){
//TODO
}
}