---
# System prepended metadata

title: 文と式

---

# 文と式

JavaScriptは、文（Statement）と式（Expression）から構成されている
<br>

## 式（Expression）

値を生成し、変数に代入できるもの
<strong style="color: #3984c6">評価した結果を変数に代入できるもの</strong>は式であるという理解で問題なし

- 特徴
式を評価すると結果の値（<strong style="color: #3984c6">評価値</strong>）を得ることができる
- 例
「42」のようなリテラル
「foo」といった変数、関数の呼び出し
「1 + 1」のような式と演算子の組み合わせ
```
console.log(1);　　　　　　　　　　　　　　　　　　　　　　　　　　　　→　リテラルなので式
console.log(1 + 1);　　　　　　　　　　　　　　　　　　　　→　式と演算子の組み合わせなので式
const total = 1 + 1;　　　　　　　　　　　　　　　　　　→　変数に代入できるものなので式
const fn = function() {　　　　　　　　　　　　→　変数に代入できるものなので関数式
    return 1;
};
console.log(fn());　　　　　　　　　　　　　　　　　　　　　　→　「fn()」は関数の呼び出しなので式
```
<br>

## 文（Expression）

処理する1ステップが1つの文

- 特徴
末尾にセミコロン(;)で区切られていること
- 例
if文やfor文

<br>

## 式文（Expression statement）

文となった式のこと
```
const isTrue = true;　　　　　　　　　　　　　　　　　→「isTrue」は「true」という評価値をもつ式
if (isTrue) {　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　→if文に「isTrue」という式が含まれている
}
```
<br>

## 重要ポイント
### <strong style="color: #3984c6">文は式になれない</strong>
次のような組み合わせは、構文エラーとなる
```
var forIsNotExpression = if (true) { }　
```

  
<br>

## ブロック文

次のような、文を{と}で囲んだ部分をブロックといいます。
｛｝の中にある文をブロック文といいます。
```
{
    文;
    文;
}
```
- if文とブロック文の組み合わせ
```
if (true) {
    console.log("文1");
    console.log("文2");
}
```
<br>

## 重要ポイント
例外として<strong style="color: #3984c6">ブロックで終わる文の末尾には、セミコロンが不要</strong>となります。

- ブロックで終わらない文なので、セミコロンが必要
```
if (true) console.log(true);
```
- ブロックで終わる文なので、セミコロンが不要
```
if (true) {
    console.log(true);
}
```
<br>

## function宣言（文）とfunction式
`function`は、文と式どちらにもなります。

- （文）learn関数を定義する
```
function learn() {
}
```
- （式）関数式をread変数へ代入
```
const read = function() {
};
```

先ほど、<strong style="color: #3984c6">ブロック文で終わる文はセミコロンが不要</strong>と学習しました。

では、なぜ「（式）関数式をread変数へ代入」のほうは、セミコロンが必要なのでしょうか？

それは、この匿名関数が式であり、
次のように置き換えても同じと言えるため、末尾にセミコロンが必要となります。
```
function fn() {}
const read = fn;
```
- 無名関数（匿名関数）とは
無名関数とは、コンピュータプログラム上で定義される関数のうち、名前を付けずに定義されるもの。
その場ですぐに実行したり、変数に代入したり、他の関数に引数として渡したりするのに用いられることが多い。
<br>

## 重要ポイント
JavaScriptには、特殊なルールに基づき、セミコロンがない文も行末に自動でセミコロンが挿入されるという仕組みがあります。 
しかし、この仕組みは構文を正しく解析できない場合に、セミコロンを足すという挙動を持っています。
これにより、意図しない挙動を生むことがあります。そのため、<strong style="color: #3984c6">必ず文の末尾にはセミコロンを書くようにしましょう。</strong>
<br>

## まとめ
- JavaScriptは文（Statement）と式（Expression）から構成される
- 文は式になれない
- 式は文になれる（式文）
- 文の末尾にはセミコロンをつける
- ブロックで終わる文は例外的にセミコロンをつけなくてよい