TIL.JavaScript面接の整理2


1.イベントBubblingとは?
DOMイベントが親要素に伝播
DOMでイベントが発生した場合、登録されているイベントリスナー関数がある場合は、実行を試みます.イベントは親要素を介してDOMツリーの上部に伝播し、各DOM要素は同じことを繰り返します(イベントリスナーのチェックと実行).このbubblingは、最上位要素documentにも実行されます.
2.==と==演算子の違いは?
==抽象的等価演算子、==厳密な等価演算子.
==分散等しい演算子とも呼ばれます.
1 == "1"; // true
1 == [1]; // true
1 == true; // true
0 == ""; // true
0 == "0"; // true
0 == false; // true
==使用するべきではありません.例外があればnullとundefinedを比較する際にも便利な点があります.
3.SPAアプリは何ですか.SEOはどうすればいいですか.
従来、Webサイトはブラウザを介してサーバからHTMLを受信し、レンダリングする方法である.ユーザーが別のURLに移動すると、ページ全体がリフレッシュされ、移動するURLに一致する新しいHTMLがサーバに渡されます.これを서버사이드렌더링と呼びます.
ただし、最新のSPAはクライアント側でレンダリングされます.ブラウザは、トップページとともにアプリケーションに必要なスクリプト、スタイルシートをダウンロードします.ユーザーが別のページに移動した場合、ページはリフレッシュされません.SPAは、初期ロード時にインポートしたJavaScriptを使用して、データとページを動的に更新します.
長所
  • ユーザーにとって、アプリケーションは、ページ切り替え中に画面の点滅やリフレッシュの遅延を表示する必要がなく、より反応性が高い.
  • サーバより少ないHTTP要求がある.
  • サーバとクライアントの間で明確な役割区分を実現
  • 短所
  • スクリプト、スタイルシートなど必要なリソースが多く、初期ロードが重くなります.
  • SPAは、コンテンツのレンダリングをJavaScriptに依存させる.ただし、すべての検索エンジンはスクロール中にJavaScriptを実行しません.これは検索エンジンの最適化の障害となっている.
    SEOが必要な場合は、サーバ側レンダリングを使用します.
  • 4.callbackの代わりにfromisを使うメリットとデメリットは?
    利点は、非同期化が容易であることです.
    長所
  • 可読性の悪いcallback地獄から脱出
  • .then()を使用すると、順序非同期タスクを簡単に作成できます.
  • Promise.allを使用すると、同時非同期タスクを簡単に作成できます.
  • promissはコールバックのみを用いた符号化では以下のようなことは起こらない!
  • コールバックが早すぎる2.コールバックが遅すぎたり、実行されなかったりします.コールバックが少なすぎたり、多すぎたりします.必要な環境変数/パラメータ5を渡すことができません.確認が必要なエラーは、例外を非表示にします.
  • 短所
  • やや複雑なコード
  • ES 2015は古いブラウザではサポートされていません.
  • 5.オブジェクトのプロパティ、配列アイテムを繰り返すにはどうすればいいですか?
    オブジェクト:for-in+hasOwnProperty,Object.keys配列:for,foreach,for-of
    1)対象
  • for-inループfor(var property in obj){console.log(property);}ただし、継承されたプロパティも含まれます.したがって、obj.hasOwnproperty(property)を使用してチェックする必要があります.
  • 2)アレイ
  • forループ
    `for (var i=0; iES 2015は、varではなくブロックスキャン変数キーワードletを使用して変数名の競合を防止することを推奨する.
  • forEacharr.forEach(function (el,index){...})index変数を必要としない場合は、宣言する必要がなく、コードで省略することもできるので、この方法はより便利です.
  • for-ofループfor(let elem of arr){...}for of構文(string、array、map、set)など、重複文を作成できます.for roughとforEach法を組み合わせた利点といえる.for of文法には両者の利点がある.forループよりもforeachメソッドの方が多い.ただし、現在はES 6が使用可能であるため、for of構文がより多く使用されている.
  • 6.可変オブジェクトと非可変オブジェクトの違い
    宣言された値は変更可能か変更不可か
    不変性は関数式プログラミングにおける核心概念である.可変オブジェクトは、作成後に値が変更される可能性のあるオブジェクトです.可変オブジェクトは作成後は変更できません.
    不変オブジェクトの例)JavaScriptでは、一部の組み込みタイプ(数値、文字列)は不変です.ただし、カスタムオブジェクトは通常可変です.不変オブジェクトはMath、Dateです.
    7.同期・非同期関数の違い
    後でコードを実行する順序実行とダイヤルバック
    同期関数は、前のコードの実行が完了してから次のコードにジャンプする必要があります.実行順序は保証されていますが、あるコードの実行時間が長くなると、プログラムが停止しているように見えます.
    非同期関数は通常、パラメータとしてコールバック関数を受け入れ、実行時にすぐに次の行のコードに移動します.コールバックは、非同期操作が完了し、呼び出しスタックが空の場合に実行されます.Webサーバからデータをロードするなどの煩雑なタスクは非同期で実行する必要がある.
    8.活動サイクルとは?CallStackとTaskQの違いは?
    同期関数はすぐにスタックに追加され、非同期コールバックはタスクキューに待機し、イベントループはスタックに追加されます.
    イベントループは、コールスタックを監視し、タスクキューに実行する必要がある操作があるかどうかを決定するための単一スレッドループです.callスタックが空で、タスクキューにcallback関数がある場合、この関数はキューから削除され、callスタックに追加されて実行されます.
    console.logのような同期関数は直接スタックに入って実行されます.ただし、非同期Web api settimeoutは、Webブラウザでタイマを実行するのではなく、スタックに入った直後に消去されます.タイマが完了すると、タスクキューにコールバックが追加され、監視中のイベントループによってスタックにコールバックが追加されてコールバックが実行されます.コールバックに非同期関数がある場合、同様の手順が繰り返されます.
    タスクキュー
    タスクキューは、生成されたタスクが担持するキューです.
    タスクキューはJavaScript実行環境ブラウザにあります.
    タスクは、Web APIの使用時に生成される(Window、Document、Event、Fetch)
    キューと同じ概念です.settimout、setInterval、setImmediateなどの非同期処理やイベントリスナーのコールバックなどの処理がタスクキューに入ります.
    コールスタック
    コンテキストが担持するスタックの実行
    callスタックはjavascriptエンジンにあります.
    操作順にcallスタックに進み、戻り値はcallスタックから削除されます.JAvascriptは単一スレッドに基づいているため、1行のcallスタックしか存在しません.