アプリ版:「スタンプのみでお礼する」機能のリリースについて

javascriptにおける式と文の違いについてですが、式がリテラルの数字や、演算式、関数などの値を生み出せるもの、変数に必ず代入できるものであると認識しております。
一方、文は、forやifなどの条件によって処理を行うもの、セミコロンを付けなくてよいブロック、と認識しております。

ここで三つ質問があります。

ブロック文には、;を付けなくてもよいはずですが、たまに;がついているときがあります。
そのようなソースには、何か意味があって付けているのでしょうか。


式と文の定義について書き連ねましたが、ソースを見て、これって式だっけ?文だっけ?となったときは、どのようにして選定すべきでしょうか。


文の一部のみに;を付けますが、その"一部"の全てを記した書籍、或いはネット上の文献などはありますか。たびたび、javascriptの書籍を参考にすることがあるのですが、そのなかにセミコロンをつけるべきものを"一部"の文であると記述してあるものがあったのですが、その一部の文には、何が含まれているのかできるだけすべて知りたいのです。

A 回答 (2件)

以下、役に立つかもしれない情報。



まず本題に入る前に前座から。

XMLの基礎知識がある場合はまず、以下の説明を読んでおくといいでしょう。
http://www.atmarkit.co.jp/fxml/ddd/ddd004/ddd004 …
この説明では::=や|を使っていますが、場所によっては違う記号を使うこともあります。

例えばRFC5322
https://www.ietf.org/rfc/rfc5322.txt
では以下のように =や/ になっています。

specials = "(" / ")" / ; Special characters that do
"<" / ">" / ; not appear in atext
"[" / "]" /
":" / ";" /
"@" / "\" /
"," / "." /
DQUOTE

ところで私が見たある説明の一部では

BlockStatement : Block
Block :'{' StatementList '}'
StatementList : ( StatementListItem StatementList ) | StatementListItem
StatementListItem : Statement | Declaration

という感じのものが存在していました。
StatementListを見てください。あ、'('ではなく(なので、'('という文字は登場しませんよ。'{'という文字はBlockに登場するけど。
これようするに
StatementListItem StatementList
→ StatementListItem StatementListItem StatementList
→ StatementListItem StatementListItem StatementList
→ StatementListItem StatementListItem StatementListItem StatementList
と増やしていくことができ、 どこかで
StatementListItem StatementListItem StatementListItem StatementList
→StatementListItem StatementListItem StatementListItem StatementListItem
という感じで止めることも可能ですね。要するに任意の個数のStatementListItemを連続させたものだということです。

ちなみに元になった説明ではoptなどという記述で、「0個でも良い」としていることもありました。

ここまでの知識を前提に、

https://www.ecma-international.org/publications/ …
の15.1 Scriptsにある
Script : ScriptBody[opt]
のScriptやScriptBodyはクリックできるようになっていますからStatementあたりまで追ってみると面白いかもしれません。
あ、太字で書いてあるのは何かを考えてくださいね、一応。
    • good
    • 0

考え方は4つ


・つけなければいけない
・つけてもいい
・つけなくてもいい
・つけてはいけない

真ん中の2つについては、文の終わりを論理的に明示したいかどうかです
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!