ホームページ >ウェブフロントエンド >jsチュートリアル >インタビュー開発のための共通の JavaScript 知識ポイントのまとめ
1. 宣言と定義
変数の型: var、ブロックドメイン(スコープ)のローカル変数を定義します。 変数形式: 文字、アンダースコア「_」または $ 記号で始まり、大文字と小文字が区別されます。 変数の割り当て: 宣言されていても割り当てられていない変数は、使用すると値が未定義になります。宣言されていない変数を直接使用すると、例外がスローされます。 計算用の変数が割り当てられていません: 結果は NaN です。例:var x, y = 1; console.log(x + y); //结果为NaN,因为x没有赋值。
2. スコープ
変数のスコープ: ES6 より前には、ブロック宣言のスコープはなく、変数は関数ブロック内またはグローバルに機能しました。次のコードに示すように、入力 x は 5 です。if (true) { var x = 5; } console.log(x); // 5ES6変数スコープ: ES6はブロックスコープをサポートしていますが、変数を宣言するにはletを使用する必要があります。次のコード出力では、例外がスローされます。
f (true) { let y = 5; } console.log(y); // ReferenceError: y is not defined1234変数のフローティング: メソッドやグローバル コードで、変数が宣言される前に変数を使用すると、例外はスローされませんが、unknown が返されます。これは、JavaScript が変数宣言を関数またはグローバルの前に自動的にフローティングするためです。たとえば、次のコード:
/** * 全局变量上浮 */ console.log(x === undefined); // logs "true" var x = 3; /** * 方法变量上浮 */ var myvar = "my value"; // 打印变量myvar结果为:undefined (function() { console.log(myvar); // undefined var myvar = "local value"; })();上記のコードと次のコードは同等です:
/** * 全局变量上浮 */ var x; console.log(x === undefined); // logs "true" x = 3; /** * 方法变量上浮 */ var myvar = "my value"; (function() { var myvar; console.log(myvar); // undefined myvar = "local value"; })();グローバル変数: このページでは、グローバル オブジェクトは window であるため、window.variable を通じてグローバル変数にアクセスできます。例:
version = "1.0.0"; console.log(window.version); //输出1.0.0No2. データ構造と型
1. データ型
6つの基本型: Boolean (true または false)、null (js は大文字と小文字を区別し、Null と NULL とは異なります)、未定義、数値、文字列、シンボル (一意で不変であることをマーク) オブジェクトの種類: オブジェクト。 オブジェクトと関数:オブジェクトは値のコンテナとして機能し、関数はアプリケーションプロシージャとして機能します。2. データ変換
機能: 文字列を数値に変換するには、parseInt メソッドと parseFloat メソッドを使用できます。 parseInt: 関数のシグネチャは parseInt(string, radix) で、radix は 10 進数や 16 進数などのデジタル基数を表す 2 から 36 までの数値です。返される結果は整数または NaN です。たとえば、以下の出力結果はすべて 15 です。parseInt("0xF", 16); parseInt("F", 16); parseInt("17", 8); parseInt(021, 8); parseInt("015", 10); parseInt(15.99, 10); arseInt("15,123", 10); parseInt("FXX123", 16); parseInt("1111", 2); parseInt("15*3", 10); parseInt("15e2", 10); parseInt("15px", 10);parseFloat: 関数シグネチャは parseFloat(string) で、戻り結果は数値または NaN です。例:
parseFloat("3.14"); //返回数字 parseFloat("314e-2"); //返回数字 parseFloat("more non-digit characters"); //返回NaN
3. データ型テキスト化
テキスト化タイプ: 配列、ブール、浮動小数点、整数、オブジェクト、正規表現、文字列。 配列内の余分なカンマ: ["Lion", , "Angel"]、長さは 3、[1] の値は未定義です。 ['home', , 'school', ]、最後のカンマが省略されるため、長さは 3 になります。 [ , 'home', , 'school']、長さは 4 です。 ['自宅', , '学校', , ]、長さは 4 です。 整数 integer: 整数は、10 進数、8 進数、16 進数、2 進数で表現できます。例:0, 117 and -345 //十进制 015, 0001 and -0o77 //八进制 0x1123, 0x00111 and -0xF1A7 //十六进制 0b11, 0b0011 and -0b11 1234 //二进制浮動小数点数: [(+|-)][数字][.数字][(E|e)[(+|-)]数字]。例:
3.1415926,-.123456789,-3.1E+12(3100000000000),.1e-23(1e-24)オブジェクト: オブジェクトの属性取得値は、「.property」または「[プロパティ名]」を通じて取得できます。例:
var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" }; console.log(car.manyCars.b); // Jeep console.log(car[7]); // Mazdaオブジェクト属性: 属性名は任意の文字列または空の文字列にすることができ、無効な名前は引用符で囲むことができます。複合名は . では取得できませんが、[] では取得できます。例:
var unusualPropertyNames = { "": "An empty string", "!": "Bang!" } console.log(unusualPropertyNames.""); // SyntaxError: Unexpected string console.log(unusualPropertyNames[""]); // An empty string console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token ! console.log(unusualPropertyNames["!"]); // Bang!エスケープ文字: エスケープ記号 """ が使用されているため、以下の文字列出力には二重引用符が含まれています。
var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service."; console.log(quote); //输出:He read "The Cremation of Sam McGee" by R.W. Service.1。文字列の折り返し方法: 次のように文字列行の末尾に直接 "" を追加します。 コードは次のとおりです。表示:
var str = "this string \ is broken \ across multiple\ lines." console.log(str); // this string is broken across multiplelines.No3. 制御フローとエラー処理
1. ブロック式 機能: ブロック式は、一般に if、for などの制御フローに使用されますが、{x++ } はブロック宣言です。
ES6 より前にはブロック スコープはありませんでした。ES6 より前では、ブロック内で定義された変数は実際にはメソッドまたはグローバルに含まれており、変数の影響はブロックのスコープを超えていました。たとえば、次のコードです。は 2 です。ブロック内で宣言された変数がメソッドに作用するためです。ES6 以降、ブロック スコープが存在します。ES6 では、ブロック スコープ宣言 var を let に変更して、変数がブロック スコープのみをスコープするようにすることができます。 2.論理判定falseと判定される特殊な値:false、unknown、null、0、NaN、""
単純ブール型とオブジェクトブール型:単純ブール型とオブジェクトブール型の false と true があります。 false と true の違い、それらは等しくありません。次の例のように:
while (x < 10) { x++; }
No4. 例外処理
1. 例外の種類例外のスローには次のような種類があります。
var x = 1; { var x = 2; } console.log(x); // outputs 2
var b = new Boolean(false); if (b) // 返回true if (b == true) // 返回false
2. 構文
キーワード: C# 構文と同様に、try{}catch(e){}finally{} 構文を使用します。 return ステートメントでは、try.catch 全体が何を返しても、戻り値は最終的に以下に示す return になります。
function f() { try { console.log(0); throw "bogus"; } catch(e) { console.log(1); return true; // 返回语句被暂停,直到finally执行完成 console.log(2); // 不会执行的代码 } finally { console.log(3); return false; //覆盖try.catch的返回 console.log(4); //不会执行的代码 } // "return false" is executed now console.log(5); // not reachable } f(); // 输出 0, 1, 3; 返回 false
finally吞并异常:如果finally有return并且catch中有throw异常。throw的异常不会被捕获,因为已经被finally的return覆盖了。如下代码所示:
function f() { try { throw "bogus"; } catch(e) { console.log('caught inner "bogus"'); throw e; // throw语句被暂停,直到finally执行完成 } finally { return false; // 覆盖try.catch中的throw语句 } // 已经执行了"return false" } try { f(); } catch(e) { //这里不会被执行,因为catch中的throw已经被finally中的return语句覆盖了 console.log('caught outer "bogus"'); } // 输出 // caught inner "bogus"
系统Error对象:我们可以直接使用Error{name, message}对象,例如:throw (new Error('The message'));
以上就是面试开发常用的 JavaScript 知识点总结的内容,更多相关内容请关注PHP中文网(www.php.cn)!