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

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

黄舟
黄舟オリジナル
2017-02-23 13:17:501144ブラウズ


No1. 構文と型

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); // 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: 整数は、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(&#39;caught inner "bogus"&#39;);
        throw e; // throw语句被暂停,直到finally执行完成
    } finally {
        return false; // 覆盖try.catch中的throw语句
    }
    // 已经执行了"return false"
}

try {
    f();
} catch(e) {
    //这里不会被执行,因为catch中的throw已经被finally中的return语句覆盖了
    console.log(&#39;caught outer "bogus"&#39;);
}
// 输出
// caught inner "bogus"

  系统Error对象:我们可以直接使用Error{name, message}对象,例如:throw (new Error('The message'));

 以上就是面试开发常用的 JavaScript 知识点总结的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


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