JavaScript面接問題の整理--更新を続けます.
3280 ワード
JavaScriptの基礎次の2つの配列/オブジェクトの作成の違い: コンストラクタは再構築できますが、字面量の声明はいけません. 字面の量は直接に行の中で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.快速列:
var arr = new Array();
var arr1 = [];
arrは構造関数で作成され、arr 1は字面量で直接作成され、両者の違いは以下の通りです.説明
戻り値
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 。
}