英文学生の日常

業務日誌.tomo

業務で感じたことをひたすら綴る

5-20 式と文の違いまとめ

学習時間は7時間9くらい.

JavaScriptの文法をちゃんと学び始めている.

 

式と文の違い(https://jsprimer.net/basic/statement-expression/

Java Sccriptにおける「式」とは「値を生成して,変数にその値の評価値を代入できるもの」です.式の特徴としては,式を評価すると結果の値を得ることができる.この時に得られた値を特に評価値といいます.この評価した結果(評価値)を変数に代入できるのが式です.

結果を変数に代入できるのは「式」という理解でOKです.

例:

// 1という式の評価値を表示
console.log(1); // => 1
// 1 + 1という式の評価値を表示
console.log(1 + 1); // => 2
// 式の評価値を変数に代入
const total = 1 + 1;
// 関数式の評価値(関数オブジェクト)を変数に代入
const fn = function() {
    return 1;
};
// fn() という式の評価値を表示
console.log(fn()); // => 1

それに対して「文」とは「処理をする1つ1つのステップのこと」です.文の行末に「;」を書くことで文と文を区別します.文は変数に代入することはできません

文にはif文やfor文といったものがあります.

また,ブロック文とは次のように文を{}で囲ったもののことを言います.

{
    文;
    文;
}
// if文とブロック文の組み合わせ
if (true) {
    console.log("文1");
    console.log("文2");
}

文の文末には「;」をつけるが,ブロックで終わる文に関しては;をつけなくてもいいです.

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

 

function文とfunction式

// learn関数を宣言する関数宣言文
function learn() {
}
// 関数式をread変数へ代入
const read = function() {
};

function文の末尾に;がありませんね.これは「ブロックで終わる文」には;は不要だからです.

おやおや?しかし次の式には;がついていますね.ここではfunctionをreadという変数に代入しています.つまりこのfunctionという匿名関数は「式」であり,ここで行われている処理というのは,readという変数を宣言する文の一部です.あくまで全体としては「式」なので文末には;をつける必要があります.