ホームページ  >  記事  >  ウェブフロントエンド  >  インタビュー開発のための共通の JavaScript 知識ポイントのまとめ

インタビュー開発のための共通の JavaScript 知識ポイントのまとめ

黄舟
黄舟オリジナル
2017-03-06 14:42:281280ブラウズ

No1. 構文と型

1. 宣言と定義

変数の型: var は変数を定義します。 const は読み取り専用の定数を定義します。
変数形式: 文字、アンダースコア「_」または $ 記号で始まり、大文字と小文字が区別されます。
変数の割り当て: 宣言されていても割り当てられていない変数を使用すると、宣言されていない変数を直接使用すると、例外がスローされます。
計算に割り当てられていない変数: 結果は NaN です。例:

var x, y = 1;
console.log(x + y); //结果为NaN,因为x没有赋值。

2. スコープ

変数スコープ: ES6 より前には、ブロック宣言スコープはなく、変数は関数ブロック内またはグローバルに機能しました。次のコードに示すように、入力 x は 5 です。

if (true) {
var x = 5;
}
console.log(x); // 5

ES6 変数スコープ: 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.0

No2. データ構造と型

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 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)

Object: オブジェクトの属性取得値は、「.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、while などの制御フローに使用されます。

while (x < 10) {
x++;
}

ES6 より前にはブロックのスコープはありません: ES6 より前では、ブロック内で定義された変数は実際にはメソッドまたはグローバルに含まれており、変数の影響はブロックのスコープを超えています。 たとえば、次のコードは次のとおりです。ブロック内で宣言された変数がメソッドに作用するため、結果は 2 になります。

var x = 1;
{
var x = 2;
}
console.log(x); // outputs 2

ES6 以降はブロック スコープがあります。ES6 では、ブロック スコープ宣言 var を let に変更して、変数のスコープのみを設定できます。ブロックスコープ

2. 論理判定

falseと判定される特殊な値: false、未定義、null、0、NaN、""。

単純なブール型とオブジェクトのブール型: 単純なブール型の false と trueオブジェクトのブール型の true と true は同じです。次の例のように、この 2 つは等しくありません。

4. 例外処理

スローされる例外の構文以下に示すように、任意の型を指定できます。 例外:

var b = new Boolean(false);
if (b) // 返回true
if (b == true) // 返回false

2. 構文

キーワード: C# 構文と同様の try{}catch(e){}finally{} 構文を使用します。

finally 戻り値: iffinally を追加します。 return ステートメントでは、try 全体が無視されます。以下に示すように、.catch が何を返しても、戻り値は return になります。次のコードに示すように、finally return でカバーされているため捕捉されません。

throw "Error2"; // 字符串类型
throw 42; // 数字类型
throw true; // 布尔类型
throw {toString: function() { return "I&#39;m an object!"; } }; //对象类型

システム エラー オブジェクト: Error{name, message} オブジェクトを直接使用できます。たとえば、 throw (new Error('メッセージ'));

上記はインタビュー開発のための一般的な JavaScript に関する知識ポイントの要約です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。