JavaScript は、いくつかの非常に良いアイデアといくつかの非常に悪いアイデアに基づいて構築されています。
非常に良いアイデアには、関数、弱い型指定、動的オブジェクト、表現力豊かなオブジェクト リテラル表現が含まれます。
悪いアイデアには、グローバル変数に基づくプログラミング モデルが含まれます。
JavaScript 関数は、字句スコープに基づくトップレベルのオブジェクトです。 JavaScript は、主流になった最初の Lambda 言語です。 Java と比較すると、JavaScript には Lisp や Scheme との共通点が多くあります。 Cの服を着たLispです。このため、JavaScript は非常に強力な言語になります。
現在、ほとんどのプログラミング言語では強い型付けが必要です。考え方としては、強い型付けにより、コンパイラがコンパイル時にエラーをチェックできるようになります。エラーの検出と修正が早ければ早いほど、コストは低くなります。 JavaScript は型指定が弱い言語であるため、JavaScript コンパイラーは型エラーを検出できません。強い型付けではテスト作業が楽になるわけではなく、一方で、弱い型付けではテストが楽になることがわかりました。複雑なクラス階層を構築したり、モデリングを強制したりする必要はありません。
JavaScript には非常に強力なリテラル表現があります。オブジェクトは、その構成要素をリストするだけで作成できます。この表現は、人気のあるデータ交換形式である JSON を作成するきっかけとなりました。
JavaScript は接続のためにグローバル変数に依存します。すべてのコンパイル単位のすべてのトップレベル変数は、グローバル オブジェクトと呼ばれる共通の名前空間に一致します。グローバル変数は悪魔であり、JavaScript では基本的なものであるため、これは悪いことです。
JavaScript の予約語:
コードは次のとおりです:
abstract boolean break byte case catch char class const continue debugger default delete do double esle enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with
番号: 64-ビット浮動小数点数
数値リテラルに指数部がある場合、リテラルの知識は、e の前の部分に e の後の部分の 10 乗を乗算することによって計算されます。したがって、100 と 1e2 は同じ数です。
値 NaN は、正常な結果を生成できない操作の結果を表す数値です。 NaN は、それ自体を含め、どの値とも等しくありません。 isNaN(number) 関数を使用して NaN を検出できます。
値 Infinity は、1.79769313486231570e 308 より大きいすべての値を表します。
JavaScript には Math オブジェクトがあり、これには数値を操作する一連のメソッドが含まれています。Math.floor(number) メソッドは数値を整数に変換します。
文字セット:
文字 - 16 ビット (Unicode は 16 ビット文字セットです)
JavaScript には文字タイプがありません。文字を表すには、1 文字だけを含む文字列を作成するだけです。
u 規則では、文字を表す数字を指定できます。 "A" === "u0041"
文字列には長さ属性があります。たとえば、「seven」.length は 5 です。
文字列は不変であり、一度作成された文字列は決して変更できません。ただし、演算子を使用して他の文字列を連結して新しい文字列を取得することは簡単です。まったく同じ文字を同じ順序で含む 2 つの文字列は、同じ文字列とみなされます。
つまり: 'c' 'a' 't' === 'cat'
JavaScript の単純な型には、数値、文字列、ブール値 (true と false)、null 値、および未定義が含まれます。価値観。他のすべての値はオブジェクトです。
オブジェクトはプロパティのコンテナであり、他の各プロパティには名前と値があります。
属性の名前には、空の文字列を含む任意の文字列を使用できます。
属性値には、アンダーファイン値を除く任意の値を指定できます。
JavaScript のオブジェクトはクラスレスです。新しいプロパティの名前と値に制約はありません。オブジェクトはデータの収集と管理に適しています。オブジェクトには他のオブジェクトを含めることができるため、ツリーまたはグラフ構造として簡単に表現できます。
JavaScript には、オブジェクトが別のオブジェクトのプロパティを継承できるようにするプロトタイプ チェーン機能が含まれています。正しく使用すると、オブジェクトの初期化時間とメモリ消費量を削減できます。
オブジェクト リテラル:
オブジェクト リテラルは、新しいオブジェクト値を作成する非常に便利な方法を提供します。オブジェクト リテラルは、中括弧のペアで囲まれた 0 個以上の名前と値のペアです。オブジェクト リテラルは、式が許可されている場所に出現できます。
var empty_object = {};
var stooge = {
"名":"ジェローム",
"姓":"ハワード"
};名前には、ホール文字列を含む任意の文字列を指定できます。オブジェクト リテラルでは、プロパティ名が有効な JavaScript 識別子で予約語でない場合、プロパティ名を引用符で囲む必要はありません。したがって、「first-name」を引用符で囲む必要がありますが、first_name を囲むかどうかはオプションです。カンマは、複数の「名前/値」ペアを区切るために使用されます。
属性の値は、別のオブジェクト リテラルを含む任意の式から取得できます。オブジェクトは入れ子にすることができます。
var flight = { airline:"Oceanic", number:815, departure: { IATA:"SYD", time:"2004-09-22 14:55", city:"Sydney" }, arrival: { IATA:"LAX", time:"2004-09-23 10:42", city:"Los Angeles" } };