プログラミング言語の語彙構造は、この言語の書き方を説明するために使用されるルールの基本的なセットです。構文の基礎として、変数名がどのように見えるか、コメントを書く方法、およびステートメントを区別する方法を指定します。このセクションでは、非常に短いスペースを使用して、JavaScriptの語彙構造を導入します。
1。文字セット
JavaScriptプログラムは、ASCIIとLATIN-1のスーパーセットであるUnicode文字セットで記述されており、この地域のほぼすべての言語をサポートしています。 ECMAScript3では、JavaScriptの実装がUnicode2、1、および後続のバージョンをサポートする必要がありますが、ECMAScript5では、JavaScriptの実装がUnicode3および後続のバージョンをサポートする必要があります。
私。大文字と小文字を区別
JavaScriptはケースに敏感な言語です。つまり、キーワード、変数、関数名、およびすべての式の文字を一貫してケースで扱う必要があります。たとえば、キーワードはそのwhileのように書かれている必要があり、そのwhileまたはwhotで書くことはできません。
ただし、HTMLはケースに敏感ではないことに注意する必要があります(XHTMLは異なりますが)。クライアントJavaScriptと密接に関連しているため、混乱するのは簡単です。たとえば、HTMLによって設定された処理イベントでは、OnClick属性はOnClickとして記述できますが、JavaScriptではOnClickとして記述できます。
IIスペース、ラインブレーク、フォーマットコントローラー
JavaScriptは、プログラムのトークン間のスペースを無視します。ほとんどの場合、JavaScriptはラインブレークも無視します。コードではスペースとラインブレークを自由に使用できるため、一度にきちんとした一貫したインデントを使用して、統一されたエンコードスタイルを形成し、コードの読みやすさを向上させることができます。
JavaScriptスペース文字の識別に加えて(/u0020)。 JavaScriptは、空間を示す次の文字も表示します:水平タブ文字(/u0009)、垂直タブ文字(/u000b)、ページ更新文字(/u000c)、非断続的な白人文字(/upea0)、エンディアンタグ(/ufeff)、およびUnicodeのすべてのZSカテゴリの文字。 JavaScriptは、次の文字を終了文字として認識します:ラインブレーク(/u000a)、キャリッジリターンシンボル(/u000d)、ラインセパレーター(/u2028)、およびセグメントセパレーター(/u2029)。キャリッジリターンキャラクターとラインブレイクの文字は、単一のラインエンディング文字に解析されます。
Unicode形式は、「右から左への書き込みマーク」(/u200f)や「左から右への書き込みマーク」(/u200e)などの文字(CFクラス)を制御し、テキストの視覚的な表示を制御します。これは、JavaScriptのコメント、文字列直接数量、および正規表現直接数量で使用できますが、識別子(たとえば変数名)で使用することはできませんが、ゼロ幅コネクタ(/u200d)およびゼロ幅の非接続器(/ufeff)で使用できますが、ゼロ幅コネクタ(/u200d)とゼロ幅の非接続器では使用できますが、識別子として使用できます。また、バイトオーダーマーク形式のコントロール文字(/ufeff)が空間として扱われていることも上記のことです。
iii.unicodeエスケープシーケンス
一部のコンピューターハードウェアとソフトウェアでは、Unicode文字の完全なセットを表示または入力することはできません。古いテクノロジーを使用してプログラマーをサポートするために、JavaScriptは、6つのASCII文字を使用して16ビットUnicode内部コードを表す特別なシーケンスを定義します。これらのユニコードエスケープシーケンスは /uが付いており、その後に16進ラット(数字と大文字と小文字AFが示されています)が続きます。このユニコードエスケープライティングは、JavaScript Stringの直接数量、正規表現、および識別子(キーワードを除く)で使用できます。たとえば、文字éのユニコードエスケープは /u00e9として書かれており、次の2つのJavaScript文字列はまったく同じです。
「café」=== "caf/u00e9" => true
Unicode Escape Writingはコメントに表示される可能性がありますが、JavaScriptはコメントを無視しているため、コンテキストでASCII文字として扱われ、Unicode文字が続きません。
IIII標準化
Unicodeを使用すると、複数の方法を使用して同じ文字をエンコードできます。たとえば、文字éはUnicode文字 /U00E9を使用できます。または、通常のASCII文字Eを使用してトーンシンボル /U0301に従うことができます。テキストエディターでは、これら2つのエンコーディングによって表示される結果はまったく同じですが、バイナリエンコーディング表現は異なり、コンピューターでは等しくありません。 Unicode標準は、インデックス文字の優先コード形式を定義し、テキストを比較に適した標準形式に変換するための標準化された処理方法を提供し、他の表現、文字列、または正規表現を標準化しなくなります。
2。コメント
JavaScriptは2つのコメント方法をサポートしています。行の最後にある「//」の後のテキストは、コメントとしてJavaScriptによって無視されます。
さらに、 / *と * /の間のテキストもコメントとして使用されます。この種のコメントは行を越えて書くことができますが、ネストされたコメントはありません。
//単一行のコメント
/*
*
*
*
*/
3。直接数
いわゆる直接数量(リテラル)は、プログラムで直接使用されるデータ値です。直接数値を以下に示します。
コードコピーは次のとおりです。
12 //番号
1.2 // 10年
「hllo world」//文字列テキスト
「こんにちは」//別の文字列
true // boolean
false // boolean
/javascript /gi //正規表現直接数量(パターンマッチングとして使用)
null //空
第3章では、数字と文字列の直接的な量を詳細に説明します。正規表現の直接的な量については、第10章で説明します。福祉のより多くの表現は、アレイまたはオブジェクトとして直接書くことができます。
{x:1、y:2} //オブジェクト
[1,2,3,4,5] //配列
4。識別子と予約済みの単語
識別子は名前です。 JavaScriptでは、識別子が変数と関数に名前を付けるか、JavaScriptコードの特定のループステートメントのジャンプ位置をマークするために使用されます。 JavaScript識別子は文字でなければなりません。アンダースコア、またはドルサインが始まります。後続の文字は文字にすることができます。番号。アンダースコアまたはドルサイン(数字はイニシャルとして表示されることは許可されていません。JavaScriptは識別子を数値と簡単に区別できます)、以下は法的識別子です
コードコピーは次のとおりです。
my_variable_name
B13
_ダミー
$ str
携帯性と執筆の容易さのために、通常、ASCIIの文字と数字のみを使用して識別子を書き込みます。次に、JavaScriptを識別子内のUnicode文字のセット全体の文字と数値を許可することに注意してください(テクノロジーからECMASACTITまで、UNICODE文字メカニズムのMNクラス、MCクラス、およびPクラスが識別子の最初の文字の後に表示されることができます)。したがって、プログラマーは英語以外の言語または数学的記号を使用して識別子を書き込むことができます。
コードコピーは次のとおりです。
varsá= true;
varπ= 3.14;
JavaScriptはキーワードとしていくつかの識別子を取り出します。そのため、名前はこれらのキーワードをプログラムの識別子として使用することはできません。
コードコピーは次のとおりです。
壊す
場合
キャッチ
続行します
デフォルト
削除削除
する
それ以外
ついに
のために
関数
もし
で
instanceof
新しい
戻る
スイッチ
これ
投げる
試す
typeof
var
空所
その間
と
JavaScriptは単語を予約しました
クラスconst enumエクスポート
エクスポートはインポートスーパーを延長します
また、これらのキーワードは通常のJavaScriptでは合法ですが、厳密なモードでは予約済みの単語です
プライベートパブリックイールドインターフェイスパッケージを実装します
保護された静的
同じ厳格なモードでは、次の識別子は厳密に制限されていますが、変数名、パラメーター名、および関数名は使用できません。
引数評価
JavaScriptの特定の実装は、一意のグローバル変数と機能を定義する場合があります。各特定のJavaScript Running Environment(クライアント)サーバーなどには、独自のグローバル属性リストがあり、留意する必要があります。 (クライアントJavaScriptで定義されているグローバル変数と関数のリストを理解するためのウィンドウオブジェクト)
5.オプションのセミコロン
多くのプログラミング言語と同様に、JavaScriptはセミコロン(;)を使用してステートメントを分離します。これは、コードの読みやすさときちんとした性を高めるために非常に重要です。セパレーターのない声明の終わりは、次の声明の始まりになり、その逆も同様です。
JavaScriptでは、各ステートメントが1行を占有し、ステートメント間のセミコロンは通常省略できます(プログラムの最後にある「}」のブレースの前のセミコロンも省略できます)。多くのJavaScriptプログラマー(この本のコード例を含む)は、セミコロンを使用して、セミコロンが完全に必要でない場合でも、ステートメントの終わりを明確にマークします。別のスタイルは、セミコロンを省略したときに省略し、使用する必要があるときにのみセミコロンを使用することです。プログラミングスタイルに関係なく、JavaScriptについて注意を払う詳細がいくつかあります。
次のコードでは、最初のセミコロンを省略できます
a = 3;
b = 4;
ただし、次の形式で書かれている場合、最初のセミコロンは省略できません。
a = 3; b = 4;
JavaScriptはすべての新しいラインでセミコロンを埋めないことに注意する必要があります。JavaScriptは、セミコロンなしで通常コードが解析されない場合にのみセミコロンを埋めます。言い換えれば(次のコードの2つの例外に似ています)、現在のステートメントとその後の非空間文字を全体として解析できない場合、JavaScriptは現在のステートメントの最後にセミコロンを埋めます。次のコードを参照してください
var a
a
=
3
console.log(a)
JavaScriptはそれを解析します
var a; a = 3; console.log(a);
JavaScriptは、セミコロンを最初の行に追加します。セミコロンがなければ、JavaScriptはコードのvar AAを解析することはできません。 2番目のAは「A;」というステートメントとして使用できますが、JavaScriptは2行目の終わりにセミコロンを埋めません。 「a = 3;」に3行目のコンテンツで解析できるため。
いくつかの声明の分離ルールは、いくつかの予期しない状況につながります。このブレークコードは2行に分かれており、2つの独立したステートメントと思われます。
var y = x + f
(a+b).toString()
2行目のブラケットは、最初の行にFとの関数呼び出しを形成します。 JavaScriptはこのコードをとみなします
var y = x+f(a+b).toString();
明らかに、コードの当初の意図はこのようなものではありません。上記のコードを2つの異なるステートメントに解析できるようにするには、動作のディスプレイセミコロンを手動で記入する必要があります。
一般的に言えば、ステートメントが([ / + - 、以前の声明に解析される可能性が非常に高い。 / + - から始まるステートメントはあまり一般的ではありませんが、([非常に一般的です。少なくともいくつかのJavaScriptエンコードスタイル)。正しく;
現在のステートメントと次の行のステートメントをマージして解析できない場合。 JavaScriptは、最初の行の後にセミコロンを埋めます。これは一般的なルールですが、外側に2つの列があります。最初の例外には、returnm、birakが含まれます。これらの3つのキーワードの後にラインブレークが続く場合、彼は声明を継続します。 JavaScriptは、Newlineでセミコロンを記入します。例えば
例えば
戻る
真実;
そして、JavaScriptが解析されました
reture; ture;
そして、コードの元の意味はです
真実を返す;
言い換えれば、リターン、ブレーク、コンティンの後続の式の間にラインブレークはあり得ません。ラインブレークが追加された場合、プログラムは特別な状況でのエラーのみを報告できます。さらに、プログラムのデバッグは不便です。
2番目の例は、++ - 演算子に関しては、これらの式シンボルが識別子式のプレフィックスと接尾辞を表すことができます。式の後に、接尾辞式として使用される場合。それと表現は1つの行と見なされるべきです。それ以外の場合は、セミコロンがラインの最後に埋められます。
コードコピーは次のとおりです。
x
++
yy
上記のコードはASとして解析されます
コードコピーは次のとおりです。
x;
++ y