隨筆-57  評論-129  文章-0  trackbacks-0

          帶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 金大為 閱讀(1267) 評論(3)  編輯  收藏 所屬分類: JavaScript

          評論:
          # re: JS幾處怪癖的語義 2007-06-30 21:44 | 豬頭小隊長
          var vaiable =0;
          function test(){
          variable =1;//別擔心,不會改動全局變量vaiable
          }

          test();
          alert(vaiable);

          打印的是1,而不是0,怎么回事?  回復  更多評論
            
          # re: JS幾處怪癖的語義 2007-07-01 08:11 | 金大為
          @豬頭小隊長
          呵呵,你看看你這個函數和我的例子有什么不同吧:)  回復  更多評論
            
          # re: JS幾處怪癖的語義 2007-07-01 10:39 | 豬頭小隊長
          hehe,faint  回復  更多評論
            
          主站蜘蛛池模板: 枣强县| 同江市| 闽侯县| 阳曲县| 德昌县| 莱西市| 江口县| 南岸区| 新民市| 肥东县| 习水县| 利辛县| 麟游县| 康保县| 郧西县| 白水县| 白玉县| 洛浦县| 宿州市| 邓州市| 东源县| 祁东县| 施甸县| 高陵县| 雅江县| 肥城市| 房产| 马公市| 金川县| 安丘市| SHOW| 兖州市| 墨竹工卡县| 华亭县| 隆尧县| 濮阳县| 南澳县| 陇西县| 北辰区| 长岭县| 临汾市|