帶ID的函數(shù)表達(dá)式:
var fn = function fnid(){};
按照ECMA262定義,上面這段腳本等價(jià)于:
with({fnid:null}){
var fn = fnid = function(){};
}
注意:fnid在with外是不可見(jiàn)的,但是IE沒(méi)有嚴(yán)格遵守ECMA規(guī)范(同樣的情況發(fā)生在catch語(yǔ)法上)。在IE上相當(dāng)于:
var fnid = function(){};
var fn = fnid;
在剛剛發(fā)布的JSA1beta上,還不能處理這個(gè)問(wèn)題(新版本將這周內(nèi)發(fā)布)。同時(shí),鑒于這種語(yǔ)法在不同瀏覽器上表現(xiàn)不同,還是建議盡量避免使用(這點(diǎn)上,我個(gè)人還是更喜歡ie的方式)。
var語(yǔ)句:
太常用了,但是,沒(méi)有注意還是很容易出問(wèn)題。
var 用來(lái)聲明全局或函數(shù)變量,但是,只是申明,重復(fù)申明也不能置空,范圍是函數(shù)或者全局空間,位置在函數(shù)或腳本頂端,與塊無(wú)關(guān),這些與常用高級(jí)語(yǔ)言區(qū)別很大。
怪癖的代碼
var vaiable =0;
function test(){
variable =1;//別擔(dān)心,不會(huì)改動(dòng)全局變量vaiable
//do 
..
var vaiable;//變量申明無(wú)順序(一律置頂),只是賦值有順序。
}
常見(jiàn)錯(cuò)誤有:
var flag;//這里可能有人(包括我自己)喜歡自做聰明的利用一下變量的初始值undefined
while(!flag){//沒(méi)準(zhǔn)那個(gè)角落里面已經(jīng)給當(dāng)前函數(shù)內(nèi)同名變量給賦值了就慘了
//
..
}
posted on 2007-06-30 16:47
金大為 閱讀(1257)
評(píng)論(3) 編輯 收藏 所屬分類(lèi):
JavaScript