前端面接のjs編整理(一)


jsの基本的なタイプは何ですか?引用の種類は何ですか?nullとundefinedの違い
js変数の値は2種類あります.1.基本タイプの値:スタックメモリに保存する簡単なデータタイプ.Number、String、Boolean、NullとUnidefinedのような2.引用タイプの値:ヒープメモリに保存されているオブジェクト.Object、Aray、Funct、Dataのようです.
null:変数が存在しないことを表しています.しばしば関数として使用して、存在しないオブジェクトのUdefinedを返します.存在しますが、定義されていません.たとえば、変数宣言には割り当てがありません.この変数はundefinedです.関数で提供したいパラメータが提供されていません.このパラメータはundefiendです.関数には戻り値がありません.この関数を受信する変数はUnidefinedなどです.
どのように変数を判断しますか?どのように変数を判断しますか?(全部一つじゃないです.)
先に言ってください.検出タイプのオペレータtypeofは、string、function、object、numberなどを検出することができますが、Arayを検出できず、Arayを検出し、戻る値は'object'です.
したがって、他の方法を使用して、配列タイプであるかどうかを検出する必要があります.
  • ES 5は、Aray.isAray(「検出する変数」)方法を提供し、もしtrue
  • に戻る.
  • Object.prototype.toString.call(検出する変数)は、配列は、「Object Aray」
  • を返します.
  • 構造関数から始まり、obj instance of Arayはデジタルタイプ
  • ですか?
    1.typeof 2を使用します.isNaNを使用します.
    JSによくあるdom操作アプリ
  • DOMの作成:document.createElement('div')
  • DOMのクエリ:
    //DOM     
    var el = document.getElementById('xxx');
    //     、   
    var parent = ele.parentNode;//  ,       
    //     :
    var nodes = ele.childNodes;
    //        /         
    var el = ele.firstChild;
    
  • DOMの変更
    //   、     
    ele.appendChild(el);
    ele.removeChild(el);
    //      
    ele.replaceChild(el1, el2);
    
    //      
    parentElement.insertBefore(newElement, referenceElement);
    
    //    
    ele.cloneNode(true) //                           
  • 属性動作
    //     {name, value}   
    var attrs = el.attributes;
    には、タグ属性の取得、設定があります.getAttributesetAttribute.タグ属性を判断、削除するhasAttribute removeAttribute
  • 事件の泡が発生したことと事件の捕獲を説明します.
          JS     window  ,    window     
                document          ,           。   ,               。
    
    まず、イベントキャプチャについて説明します.イベントは最上層で最も正確ではないオブジェクトdocumentからトリガされ、コード指定の正確な要素に行ってele.addEventListenerをトリガします.
    親レベルのクリックイベントがあれば、サブレベルのクリックイベントもあります.addEventListenerの最後のパラメータを設定したらtrueです.クリックする時、先に親レベルを実行して、サブレベルを実行します.
    3番目のパラメータがtrueに設定されている場合、イベントは捕獲段階でfalseに設定され、泡立ち段階でトリガされます.
    親レベルにクリックがある場合は、サブレベルにもクリックイベントがあります.addEventListenerの最後のパラメータをfalseとして設定した場合は、クリックすると、先にサブレベルを実行し、親レベルを実行します.また、サブレベルでは上に泡ができるように組織されていますが、最終的にはサブレベルのクリックイベントのみを実行してe.stopPropagation()を使用することができます.
    クローズドに対する理解?閉包はいつできますか?クローズドの実現方法?クローズドの長所と短所?
    クローズドは形から見てfunction return functionです.
    私たちはすべてのjsの変数に大域変数と局所変数があることを知っています.円形チェーンによって、サブオブジェクトはすべての親オブジェクトの変数を1段階ずつ上に探します.したがって、親オブジェクトのすべての変数は、子オブジェクトに対しては見えますが、逆は成立しません.Function内の局所変数は、Function return functionを介して大域的に操作することができ、これはクローズドされている.
    短所:functionは参照タイプですので、関数内はヒープメモリに保存されます.関数のプライベート変数returnが出てくると、メモリのリークが発生します.