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