4

eloquentjavascript.netから無料でアクセスできる「EloquentJavaScript」という本でJavaScriptを学び始めました。これまでのところ、私はこの本が本当に好きです。私が理解していないセクションが1つだけあります。これは、式とステートメントに関するものです。

http://eloquentjavascript.net/chapter2.html#p65af5913

このトピックは以前にStackOverflowで言及されたことがあることは知っていますが、これらはより具体的な質問であり、率直に言って、すべてを理解することはできません。

段落の冒頭で、著者は式とは何かを説明しています。私が正しく理解していれば、42や「23」などの原子値は式と見なされています。これらの値を演算子に適用した場合(42〜19のように)、これも式と見なされます。(明らかに23であることが判明したため、これは再びアトミック値であると思います。)これを次のように解釈します。直接入力されているか、まだ計算されていないかに関係なく、すべての値は式と呼ばれます。 。あれは正しいですか?

次に、作者は次のように述べています。「式よりも大きい単位が存在します。これはステートメントと呼ばれます。[...]ほとんどのステートメントはセミコロン(;)で終わります。最も単純な種類のステートメントは、その後のセミコロン。」例として彼は言及します

!false;
例として。私の質問は、「これは何がステートメントなのか?最後のセミコロンだけなのか?」です。JavaScriptコンソールを使用する場合、セミコロンの有無にかかわらず、JavaScriptコンソールを入力してもまったく違いはありません。常にtrueを返します。しかし、著者は、「[A]ステートメントは、それが何らかの形で世界を変える場合にのみ、何かに相当する」と述べています。 したがって、与えられた例は、 「値[...] trueを生成し、すぐにビットバケットにスローする」ため、ステートメントでさえありませんか?私は今本当に混乱しています...頭の中でそれを完全に台無しにしなかった場合、ステートメントには何らかの「副作用」(変数の宣言など)が必要ですよね?

しかし、誰かが声明が何であるかを説明することができれば、私は非常に嬉しいです。また、これらの用語の区別が実際に役立つ例を誰かが挙げてくれると非常に役立ちます。なぜなら、今のところ、著者がこれらの語彙をわざわざ紹介する理由すら想像できないからです。事前にどうもありがとうございました!

4

1 に答える 1

4

あいまいではありますが、単純なアナロジーは、文にグループ化されたフレーズで構成される自然言語のテキストです。"it's raining" のような句は、"I will not go out. It's raining." のように、それ自体で文を形成できます。または、「ひどい天気、いつも雨が降っています」のように、より大きな文の一部になります。

とはいえ、JavaScript では式とステートメントの区別が非常に曖昧です。他の C に似た言語とは異なり、ステートメント内に式だけでなく、式内にもステートメントを含めることができます。

a = 1 + function(x) { if(x > 1) return 10 } (20) 

Jquery などの最新の JavaScript プログラムの中には、基本的に 1 つの式を作成する宣言手法を使用するものがあります。

このあいまいな区別 (混乱とまでは言わない) は、Javascript が C/pascal/algol のような命令型言語であると同時に、"声明」。関数型言語では、すべてが式です。

さらに興味深いことに、ステートメント間のセミコロンは (場合によっては) オプションです。そのため、2 つの式が 1 つのステートメントに属しているか、2 つの異なるステートメントを形成しているかを簡単に判断する方法はありません。検討:

 a = 1  // two
 !2     // statements

 a = 1  // one
 +2     // statement
于 2013-01-15T22:46:52.683 に答える