ホームページ >ウェブフロントエンド >jsチュートリアル >Javascriptコアの語彙構造の読み方_基礎​​知識

Javascriptコアの語彙構造の読み方_基礎​​知識

WBOY
WBOYオリジナル
2016-05-16 16:16:241163ブラウズ

プログラミング言語の語彙構造は、言語の記述方法を記述する基本的なルールのセットです。構文の基礎として、変数名の見た目、コメントの書き方、ステートメントの区別方法などが規定されています。このセクションでは、非常に短いスペースを使用して JavaScript の語彙構造を紹介します。

1. 文字セット

JavaScript プログラムは、ASCII と Latin-1 のスーパーセットである Unicode 文字セットを使用して記述されており、この地域のほぼすべての言語をサポートしています。 ECMAscript3 では、JavaScript の実装が Unicode2,1 以降のバージョンをサポートする必要があり、ECMAscript5 では Unicode3 以降のバージョンのサポートが必要です

i. 大文字と小文字が区別されます

JavaScript は大文字と小文字を区別する言語です。つまり、キーワード、変数、関数名、およびすべての式文字は大文字と小文字を一貫して使用する必要があります。たとえば、キーワード while は While や WHILE ではなく、while と記述する必要があります。

ただし、html は大文字と小文字を区別しないことに注意してください (xhtml は区別しますが)。クライアント側の JavaScript と密接に関連しているため、混乱しやすいです。例えば、HTMLで設定する処理イベントではonclick属性をonClickと記述できますが、JavaScriptではonclickと小文字で記述します。

ii スペース、改行、書式コントロール

JavaScript はプログラム内のトークン間のスペースを無視します。ほとんどの場合、JavaScript は改行も無視します。コード内でスペースや改行を自由に使用できるため、整然とした一貫したインデントを使用して統一されたコーディング スタイルを形成し、コードの読みやすさを向上させることができます。

JavaScript はスペース文字 (u0020) に加えてスペース文字も認識します。 JavaScript は、スペースをマークする次の文字も表します: 水平タブ (u0009)、垂直タブ (u000B)、フォーム フィード (u000C)、非改行空白 (u00A0)、バイト オーダー マーク (uFEFF)、および Zs カテゴリのすべての文字ユニコード。 JavaScript は、改行 (u000A)、キャリッジ リターン (u000D)、行区切り文字 (u2028)、および段落区切り文字 (u2029) の文字をターミネータとして認識します。キャリッジ リターン文字とライン フィード文字は一緒に単一の行終端文字に解析されます。

「右から左への書き込みマーク」(u200F) や「左から右への書き込みマーク」(u200E) などの Unicode 形式の制御文字 (Cf クラス) は、テキストの視覚的な表示を制御します。これは、一部の英語以外のテキストを正しく表示するために重要です。これらの文字は、JavaScript コメント、文字列リテラル、正規表現リテラルでは使用できますが、幅ゼロを除き、識別子 (変数名など) では使用できません。コネクタ (u200D) およびゼロ幅非コネクタ (uFEFF)。これらは、識別子に使用できる手書き文字ですが、識別子として使用することはできません。前述したように、バイト オーダー マーク形式制御文字 (uFEFF) はスペース

として扱われます。

iii.Unicode エスケープ シーケンス

一部のコンピューター ハードウェアおよびソフトウェアでは、Unicode 文字の完全なセットを表示または入力できません。古いテクノロジを使用するプログラマをサポートするために、JavaScript は 6 つの ASCII 文字を使用して 16 ビット Unicode 内部コードを表す特別なシーケンスを定義します。これらの Unicode エスケープ シーケンスには、接頭辞として u が付き、その後に 16 進数のマウス (数字と大文字と小文字の A ~ F を使用して表されます) が続きます。この Unicode エスケープ記述方法は、JavaScript 文字列リテラル、正規表現、および識別子 (キーワードを除く) で使用できます。たとえば、文字 é の Unicode エスケープ記述メソッドは u00E9 であり、次の 2 つの Javascript 文字列はまったく同じです。

"カフェ" === "cafu00e9" => true
Unicode エスケープ記述はコメント内に現れる可能性がありますが、JavaScript はコメントを無視するため、コメントはコンテキスト内で ASCII 文字としてのみ扱われ、対応する Unicode 文字

が後に続くことはありません。

iiii 標準化

Unicode では、複数のメソッドで同じ文字をエンコードできます。たとえば、文字 é には、Unicode 文字 u00E9 を使用することも、イントネーション記号 u0301 が後に続く通常の ASCII 文字 e を使用することもできます。テキスト エディタでは、これら 2 つのエンコードによって表示される結果はまったく同じですが、バイナリ エンコード表現が異なります。 . コンピュータでも同様です。 Unicode 標準は、インデックス文字の推奨コード形式を定義し、テキストを比較に適した標準形式に変換するための標準化された処理方法を提供します。他の表現、文字列、または正規表現は標準化されません。

2. 注意事項

JavaScript は 2 つのコメント メソッドをサポートしています。行末「//」の後のテキストは、JavaScript によってコメントとして無視されます。
また、/* と */ の間のテキストもコメントとして扱われます。この種のコメントは行をまたいで記述できますが、コメントをネストすることはできません。

//単一行コメント
/*
*
*
*
*/
3. 直接測定

いわゆるリテラルは、プログラム内で直接使用されるデータ値です。リテラル数量は以下にリストされています。

コードをコピー コードは次のとおりです:

12 //数字
1.2 //10 進数
"Hello World" //文字列テキスト
'hi' //別の文字列
true //ブール値
false //ブール値
/ Javascript / gi // 正規表現直接数量 (マッチングモード一致)
ヌル
第 3 章では、数値と文字列リテラルについて詳しく説明します。正規表現リテラルについては第 10 章で説明します。さらに多くの式を配列またはオブジェクト リテラルとして記述できます。

{x:1,y:2} //オブジェクト

[1,2,3,4,5] //配列

4. 識別子と予約語

識別子は名前です。 JavaScript では、識別子は変数や関数に名前を付けるため、または JavaScript コード内の特定のループ ステートメント内のジャンプ位置をマークするために使用されます。 JavaScript 識別子は文字で始まる必要があります。アンダースコアまたはドル記号で始めます。後続の文字は文字にすることができます。番号。アンダースコアまたはドル記号 (数字を最初の文字として使用することはできません。JavaScript は識別子と数字を簡単に区別できます)。以下は正当な識別子です

コードをコピーします コードは次のとおりです:
私の変数名
b13
_ダミー
$str

移植性と書きやすさの理由から、通常、識別子の記述には ASCII 文字と数字のみを使用します。次に、JavaScript では、Unicode 文字セットの文字と数字を識別子に使用できることに注意してください (技術的には、ECMAScript では、Unicode 文字メカニズムの Mn クラス、Mc クラス、および P クラスを識別子の最初の文字の後に使用できます)。したがって、プログラマは英語以外の言語や数学的表記法を使用して識別子を記述することができます

コードをコピーします コードは次のとおりです:
var sá = true;
var π = 3.14;

JavaScript は一部の識別子を取り出してキーワードとして使用するため、プログラム内でこれらのキーワードを識別子として使用することはできなくなります。

コードをコピーします コードは次のとおりです:
休憩
ケース
キャッチ
続ける
デフォルト
削除
する
それ以外
ついに

用 関数
もし

で インスタンス
新しい
戻る
スイッチ
これ
投げる
試してみてください

の種類 var
無効
その間

付き

JavaScript の予約語

クラス const enum エクスポート
エクスポート拡張インポート super
また、これらのキーワードは通常の JavaScript では有効ですが、strict モードでは予約語です

実装により、プライベート・パブリックがインターフェース・パッケージを生成できるようになります
保護された静的
同じ厳密モードでは以下の識別子に厳しい制限がかかりますが、変数名、パラメータ名、関数名は使用できません。

引数の評価
JavaScript の特定の実装では、固有のグローバル変数および関数が定義される場合があります。特定の JavaScript 実行環境 (クライアント) サーバーなどには、独自のグローバル属性リストがあることに留意する必要があります。 (クライアントJavaScriptで定義されたグローバル変数と関数リストを理解するためのウィンドウオブジェクト)

5. オプションのセミコロン

多くのプログラミング言語と同様、JavaScript ではステートメントを区切るためにセミコロン (;) を使用します。これは、コードの可読性と整頓性を高めるために非常に重要です。区切り文字がないと、あるステートメントの終わりが次のステートメントの始まりになり、その逆も同様です。
JavaScript では、各ステートメントは独自の行にあり、ステートメント間のセミコロンは通常省略できます (プログラムの最後の中括弧 "}" の前のセミコロンも省略できます)。多くの JavaScript プログラマ (この本のコード例を含む) は、セミコロンが必ずしも必要でない場合でも、ステートメントの終わりを明確に示すためにセミコロンを使用します。セミコロンを省略できる場合は必ずセミコロンを使用します。セミコロンは必要な場合にのみ使用してください。プログラミング スタイルに関係なく、JavaScript については注意すべき点がいくつかあります。
次のコードでは、最初のセミコロンは省略できます

a=3;
b=4;
ただし、以下の形式で記述した場合、最初のセミコロンは省略できません。

a=3;b=4;
JavaScript はすべての改行でセミコロンを埋めないことに注意してください。JavaScript は、コードがセミコロンなしでは正常に解析できない場合にのみセミコロンを埋めます。つまり、(例外の下のコード内の 2 つの場所と同様)、現在のステートメントと後続の非スペース文字を全体として解析することはできません。JavaScript は現在のステートメントの末尾にセミコロンを埋めます。次のコードを見てください

変数

=
3
console.log(a)
JavaScriptはそれを

として解析します

var a;a=3;console.log(a); JavaScript は最初の行にセミコロンを追加します。セミコロンがないと、JavaScript はコード内の var a a を解析できません。 2 番目の a は単独のステートメント「a;」と見なすことができますが、JavaScript は 2 行目の末尾のセミコロンを埋めません。コンテンツの 3 行目と一緒に「a=3;」に解析できるためです。

ステートメントの分割ルールによっては、予期しない状況が発生する可能性があります。このコード ブレークは 2 つの行に分割されており、2 つの独立したステートメントのように見えます。

var y = x f

(a b).toString()
2 行目の括弧と 1 行目の f は関数呼び出しを形成しており、JavaScript はこのコードを
とみなします。

var y = x f(a b).toString();

明らかに、これはコードの意図したものではありません。上記のコードを 2 つの異なるステートメントに解析するには、動作の表示セミコロンを手動で入力する必要があります。
一般に、ステートメントが ( [ / - で始まる場合、そのステートメントは前のステートメントと一緒に解析される可能性が非常に高くなります。/ - で始まるステートメントはあまり一般的ではありませんが、( [ で始まるステートメントは非常に一般的です。少なくとも、一部の JavaScript エンコーディング スタイルでは、この方法でステートメントの前にセミコロンを慎重に追加することがよくあります。このようにして、前のステートメントが変更され、セミコロンが誤って削除されたとしても、現在のステートメントはそのまま残ります。同様に正しく解析されます。 現在のステートメントとステートメントの次の行を結合して解析できない場合。次に、JavaScript は最初の行の後にセミコロンを埋め込みます。これは、2 つの列を除く一般的な規則です。最初の例外には、returnm、birak、および continue ステートメントが含まれます (これら 3 つのキーワードの後に​​改行が続く場合)。 JavaScript は改行時にセミコロンを埋めます。たとえば

たとえば

戻る

true;

そして、JavaScript は

に解析されます。
戻る;次へ;
コードの本来の意味は

true を返します;
つまり、後続の return、break、および continue の式の間に改行を入れることはできません。改行が追加された場合、プログラムは非常に特殊な状況でのみエラーを報告します。そして、プログラムのデバッグは非常に不便です。

2 番目の例には -- 演算子が含まれており、これらの式シンボルは識別子式の接頭辞と接尾辞を表すことができます。接尾辞式として使用される場合は、接尾辞式として使用されます。それと式は 1 行で表示される必要があります。それ以外の場合は、行の末尾にセミコロンが埋め込まれます。

コードをコピーします コードは次のとおりです: ×
やあ

上記のコードは

に解析されます

コードをコピーします コードは次のとおりです:

x;

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