JavaScriptの面接問題の整理
5791 ワード
識別子、変数、定数
✔変数(variable)で変更可能な数量(データ)
✔識別子あるデータを識別するための名称変数名
✔定数変更不可データ
✔変数と定数区分他のデータを割り当てられたスペースに再割り当てできるか
未定義とnull
✔undefined:変数が付与されておらず、オブジェクトに存在しない属性にアクセスしようとした場合、void関数が実行した結果
(let、constは初期化されているため、未定義の割当ての前にアクセスできません)
✔null:空の値を表す
null == undefined // true
null === undefined // false
実行コンテキスト
✔実行するコードを含む環境情報の対象
がんばって
💥 識別子を最上位レベルにドラッグして変数情報を収集します.
function hoisting() {
var a = 1; // 변수 생성
console.log(a); // 1
var a; // 이미 선언된 a가 있으므로 무시
console.log(a); // 1
var a = 3; // 값만 할당
console.log(a); // 3
}
💥 変数は宣言のみをドラッグ&ドロップし、関数全体をドラッグ&ドロップします.✔関数宣言:関数定義部分のみ存在し、個別の配分はない
function fx() {...}
✔関数式:定義した関数を個別の変数に割り当て、他の関数名は不要var fx = function() {...}
スキャン
💥 識別子の有効範囲
💥 スキャンチェーン:識別子の有効範囲を内側から外側に順に検索します.
💥 複数のブランチで同じ識別子が宣言されている場合は、ブランチチェーンで最初に検出された識別子にアクセスします.
関数とメソッド(独立性の違い)
✔関数:独立した機能を実行する
✔方法:自分の呼び出し先オブジェクトに対して操作を行う
✔関数名の前にオブジェクトが指定されている場合は、メソッドまたは関数です.
this
💥 実行コンテキストの作成時に一緒に決定
💥 メソッド時にボディを呼び出す情報
💥 関数の場合、この値は指定されません(グローバルオブジェクトを指します).
💥 矢印関数はこのアイテムをバインドしません
💥 コールバック関数では、制御権を持つ関数(メソッド)が、コールバック関数でこの関数を何とするかを決定します.
このメソッドを明示的にバインド
✔call:このパラメータを最初のパラメータでバインドし、後のパラメータをパラメータとして使用
✔apply:このパラメータを最初のパラメータでバインドし、パラメータとして使用するパラメータを配列に送信
✔bind:callと似ていますが、すぐに呼び出さず、このパラメータとパラメータのみに基づいて新しい関数を返します.
Function.prototype.call(thisArg[arg1, [arg2[, ...]])
Function.prototype.apply(thisArg[, argsArray])
Function.prototype.bind(thisArg[arg1, [arg2[, ...]])
💥 ある関数で宣言された変数を参照する内部関数で発生する現象.
💥 ある関数を参照して宣言された変数の内部関数を外部に渡すと、外部関数の実行コンテキストが終了しても変数は消えません.
💥 呼び出すことができる関数
Reference
この問題について(JavaScriptの面接問題の整理), 我々は、より多くの情報をここで見つけました https://velog.io/@gschoi1224/자바스크립트-면접-질문-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol