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という変数を宣言する文の一部です.あくまで全体としては「式」なので文末には;をつける必要があります.