#7 変数の宣言と定義#7 変数の宣言と定義戻る


正式な用語

 前回は、「変数」と「代入」という用語を学びました。知識のお話ですね。それに対して、今まで「定義」という単語も使ってきましたが、これは知識の話ではなく、Google翻訳先生がエラーメッセージの「define」を「定義」と訳しただけのことです。そして、前回まで、「変数」は「定義」してから使用してきました。そうしないとエラーになってしまいますからね。

 ただ、
 「変数は定義しないと使用することが出来ない」
という表現は、正しいと言えば正しいのですが、正確ではありません。そもそも「定義」はGoogle翻訳先生から出てきた単語で、正式用語ではありませんからね。
 では、正式な用語を使用した表現では何と言えばよいのかというと
 「変数は宣言しないと使用することが出来ない」
となります。「変数の宣言」が正式用語です。

変数を定義する

 「宣言」が正式用語であるにもかかわらず、何故Google翻訳先生は「定義」と訳したのでしょうか? 翻訳ミス? 流石にそんなことは無いですね。「define」は「宣言」ではないでしょう。が、変数を定義せずに使用した場合のエラーメッセージは、
「'変数名' is not defined」
であることに間違いはないのです。

 ここで、前回のパートを思い出していただきたいのですが、4行目で「1つの文で複数の処理を行なう」ことを学びましたよね。

    const   g = ca.getContext( '2d' );              //  変数gを定義。代入内容は不明

 変数の定義をして、代入もしている、というお話でしたが、「定義」は正式用語ではなく、「宣言」が正しいわけですよね。そうなると、ここのコメントは、

    const   g = ca.getContext( '2d' );              //  変数gを宣言。代入内容は不明

とすべきでしょう。そして、この「変数の宣言と代入」という2つで1文の処理をコメントアウトすると、

SCRIPT5009: SCRIPT5009: 'g' is not defined

と言われてしまうわけですから、まとめると、
「変数の宣言と代入」を行なわないと、定義していない!
と言われてしまうということですよね。つまり、

「変数の宣言をして代入もする」と「定義した」

ということになるのです。

用語のあいまい性

 「宣言」や「代入」といった用語は、その意味合いが厳密なのですが、残念ながら「定義」に関してはあいまいなんです。慣れてくれば、なんとなく分かってくると思うのですが、初心者のうちは、そういうのは混乱の元ですよね。

 ちなみに、JavaScript言語以外でも、当然ながら「変数の定義」といった概念がある言語は多いのですが(無い言語もありますけど)、その言語によってもまた「定義」のニュアンスが微妙に異なったりします。他者との会話で「変数の定義」という台詞を使う場合は注意しましょう!

 というわけで、この講座では、今後極力「変数の定義」とは言わないようにしたいと思います。「変数を宣言して代入」と言えば良いだけですからね。コメントも書き換えておきましょう!

window.onload = function( ev )                      //  文ではない何か
{                                                   //  不明な行
    const   ca = document.getElementById( 'main' ); //  変数caを宣言。代入内容は不明
    const   g = ca.getContext( '2d' );              //  変数gを宣言。代入内容は不明
    g.font = "40px monospace";                      //  変数gの書体を40ドットへ
    g.fillStyle = "#ff0000";                        //  変数gの描画色を赤へ
    g.fillText( "こんにちは世界", 40, 80 );         //  変数gへ文字列を描画
}                                                   //  不明な行

 ソースファイル


 前: #06 変数と代入   目次  次: #08 let、constの違いとvar
最終更新日時:2022/02/24
戻る戻る back