JavaScript面接問題の整理--更新を続けます.


JavaScriptの基礎
  • 次の2つの配列/オブジェクトの作成の違い:
    var arr = new Array();
    var arr1 = [];
    arrは構造関数で作成され、arr 1は字面量で直接作成され、両者の違いは以下の通りです.
  • コンストラクタは再構築できますが、字面量の声明はいけません.
  • 字面の量は直接に行の中でproperty声明を書くことができて、構造関数は駄目です.
  • 字面量は対象を生成するのが比較的に速くて、引用を探す必要はなくて、proto方法
  • を遍歴する必要はありません.
  • 大容量の配列を素早く作成する必要がある場合は、構造法を用いて生成することを推奨します.
  • 配列の習慣用法:
  • メソッド名
    説明
    戻り値
    push([item 0,item 1,item 2])
    配列の最後にパラメータを追加します.
    新しい配列の長さ
    ポップ()
    配列の最後の要素を削除して、行列を返します.
    削除されたアイテムの値
    sort(comprefn)
    compreFnに従って配列を並べ替える.
    並べ替え後の新しい配列
    ジョイン(separator)
    配列の要素間にセパレータを追加し、対応する文字列値を生成します.
    新しく生成した文字列
    逆転()
    配列の要素を逆順に置き換える
    新しい配列
    unshift([item 0,item 1,item 2])
    配列の頭に要素を追加します.
    shift()
    配列の最初の要素を削除します.
    3.newキーワードでオブジェクトを作成する時のnewの役割:
    Created with Rapha a l 2.12からvar obj=new Object();オブジェクトをnew式で構成関数を呼び出し、構造関数内のthisが新たに生成したオブジェクトを参照する.オブジェクトを返します.オブジェクトの参照はnew式の値です.
    コンストラクタは陰的にreturn thisを実行します.コンストラクタ自体returnが別のオブジェクトを持っている場合、他のオブジェクトに戻ります.returnが基本タイプの値であれば、やはりthisオブジェクト4に戻ります.const、let、var:+varは事前に宣言しています.すなわち、スコープ内のどの位置においてもvarで変数を宣言すると、その宣言は自動的にスコープの上部に繰り上げられます.letとconstは必ず先に声明を出してから使用しなければなりません.また、繰り返し声明は許されません.声明の前倒しは存在しません.また、所在するスコープから変数宣言の位置音場の暫定的なデッドエリアに到達します.つまり、下のコードブロックはエラーを報告します.const声明は必ず初期化します.つまり声明の時には価値を与えます.また、varとletまたはconstは、同じ変数が間違っていると宣言する作用領域に現れます.letとconstは声明を繰り返してはいけないからです.5.矢印関数:+矢印関数のthisは、使用時のオブジェクトではなく、定義時のオブジェクトを指します.矢印関数の指し示しは固定されています.+はコンストラクタとしてはいけません.newコマンドを使用してはいけません.さもなければ、エラーを報告する+はアーグメンツオブジェクトを使用してはいけません.このオブジェクトは関数の中には存在しません.使うなら、レスポンスパラメータで代用できます.yieldコマンドは使用できませんので、矢印関数はGenerator関数6.appry、call、bindの違いとして使用できません.両者の違いはパラメータに対する伝達の違いにある.applyは、argObjを除いた全てのパラメータを配列として伝達する.コールはその後のアークスをそのまま伝えます.bindこの方法は、bind()関数に渡す値に結合される関数の一例を作成します.7.ES 6 module export/import、module.export、requireの違い:8.クローズド:クローズドとは、別の関数作用領域にアクセスする権限がある変数の関数です.一般的な方法は、関数内で他の関数を宣言することです.9.プロトタイプチェーン:10.快速列:
    function quickSort(arr, left, right) {
        if(arr === undefined || arr.length <1) return arr;  //  
        let pivot = arr.length/2;  
        let left = [];
        let right = [];
        //    , pivot      left , pivot      right 
        for(var index; index< arr.length; index++){
            if(arr[index] < arr[pivot]){
                left.push(arr[index]);
            }
            else{
                right.push(arr[index]);
            }
        }
        return quickSort(left).concat(arr[pivot], quickSort(right)); 
        // left right              。
    
    }