JavaScript 相關

1.null和undefined區別

     undefined 繼承自null,兩者都是瀏覽器window的一個特殊屬性

例:  

      alert('undefined' in window); //輸出:true 
      var anObj = {}; 
      alert('undefined' in anObj); //輸出:false 

   undefined  表示變量未定義或者定義了未賦值的值

例: 

     var a;
     alert(a);//輸出:undefined 
     alert( typeof b);//輸出:undefined
     alert(b);//產生錯誤

 

  對於未聲明的變量,只能執行一項操作,即使用typeof 檢測其數據類型

  即便未初始化的變量被自動賦予undefined值,但顯示地初始化變量依然是明智的選擇。如果能做到這一點,那麼當typeof操作符返回undefined值時,我們就知道被檢測的變量還沒有被聲明,而不是尚未被初始化。

   null代表空指針對象,所以用typeof檢測null回返回"object"

無論在什麼情況下沒有必要把一個變量顯式的設置爲undefined;但只要意在保存對象的變量名還沒有真正保存對象(實例化),就應該明確地讓該變量保存null值。這樣做可以體現null作爲空對象指針的慣例,而且也有助於進一步區分null和undefined。

個人認爲null和undefined主要作用是區分未賦值的對象和變量,正確使用null和undefined可以避免一些混亂

2.RegExp類型

  var expression=/parttern/flags

   var parttenr1=/[bc]at/i

   var parttenr2=new RegExp("[bc]at","i")

   alert(parttenr2.source);正則表達式字面量值

  alert(parttenr2.golbal);是否設置了global標誌

   alert(parttenr2.ignoreCase);是否設置了i標誌

   alert(parttern2.multiline);是否設置了m標誌

   alert(parttern2.lastIndex);整數,表示開始搜索下一個匹配項的字符位置,從0算起

所有元字符都要雙重轉義:

   /\w\\hello\\123\  等價"\\w\\\\hello\\\\123"

    exex()匹配返回一個Array數組,包含2個額外屬性,index和input,index表示匹配字符出現的位置,input表示應用正則表達式的字符串

      var test="cat bat bat";

      var matches=parttern2.exec(text);

      alert(matches[0]);

    test()方法接受一個字符串參數,匹配模式返回true

3.作用域鏈(Scope Chain)
   JavaScript中的一種重要機制,JS中所有的標識符(Identifier)都是通過Scope Chain來查找值的。

詞法作用域(Lexical Scoping)
   JavaScript中的函數運行在它們被定義的作用域裏,而不是它們被執行的作用域裏.
   這個作用域我們稱之爲[[scope]]
   非內嵌函數的[[scope]]都是宿主對象,不同的宿主會有不同的內容

var i = "w i"; 
var a =function(){ 
    alert(i); 
} 
var b = function(){ 
    var i = "b i"; 
    a(); 
} 
var c = function(){ 
    a(); 
} 
a();
b();
c();


輸出都爲 w i

call apply都不繼承原型鏈
只繼承函數中定義的方法屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章