leaning diary Rails

【Learning Diary46】JavaScriptの基本文法(コメント/const/let/var)

【Learning Diary46】JavaScriptの基本文法(コメント/const/let/var)

 

JavaScriptの基本文法(コメント/const/let/var)を学びます。

 

コメントの書き方

// 一行コメント
// この1行はプログラムとして評価されません。

/*
複数行コメント
囲まれている範囲はプログラムとして評価されません。
*/

 

変数と宣言

JavaScriptには変数を宣言するキーワードが3つあります。

 

■const

■let

■var

 

var が最も古いのですが、意図しない動作を誘発したため、ECMAScript 2015で新しくconst とlet が追加されました。

 

JavaScriptという言語はECMAScriptによって仕様が定められています。

ECMAScriptは毎年アップデートされますが、直近の大きなアップデートは2015年にECMAScript 2015(ES2015)でした。

const

読み方は「コンスト」。

再代入できない変数の宣言とその変数が参照する値(初期値)を定義できます。

変数の定義は、const に続いて 変数名を書き、代ン風演算子( =)の右辺に変数の初期値を書きます。

 

const 変数名 = 初期値;

 

例えば変数jsに"JavaScript"という初期値を文字列で設定する場合は以下のようになります。

 

const js = "JavaScript";

変数同士を,(カンマ)で区切ることにより、複数の変数を定義できます。

 

const js = "JavaScript",
rails = "Ruby on Rails";

// 上記は下記と同じです。
const js = "JavaScript";
const rails = "Ruby on Rails";

初期値といっても、constは再代入不可のため、宣言した変数に値を再代入しようとするとエラー(TypeError)が発生します。

 

const js = "JavaScript";
js = "JS"; // => TypeError: invalid assignment to const 'js'

 

一般的に変数の代入に関しては「変数の値は最初に定義した値と常に同一になる」という参照透過性(さんしょうとうかせい)というルールがあります。

変数への再代入はこのルールに違反し、バグの発生を誘発します。

変数に対して値を再代入する必要がない場合は、constを使って変数を宣言することが推奨されます。

 

なお、 constにはオブジェクトを定義することができます。

 

初期値を変えることはできませんが、オブジェクトの値は変えることができます。

 

再代入はできませんが、宣言した変数が常に同じ値を示すとは限らないため、定数とは異なります。

let

let はconstと異なり、値の再代入が可能な変数を宣言できます。

 

ほぼconstと同じ使い方ができますが、初期値を設定しなくて良い点は異なります。

 

初期値を指定しない場合は、デフォルト値(undefined)が設定されます。

 

値を代入するときは、代入演算子(=)を使います。

 

varの問題

 

varはletとほぼ同じ使い方ができます。

 

問題は、varキーワードには同じ名前の変数を再定義できてしまうことです。

 

そのため、意図せずに同じ変数名で定義してもエラーは生じず、値が上書きされてしまいます。

 

そのほか、「変数の巻き上げ」と呼ばれる挙動など複数の問題があることから、varの利用は避けたほうが良いとされています。

 

なお、var自体の動作が変更されていないのは、後方互換性を保つためです。

 

変数名の命名ルール

 

■半角のアルファベット、_、$、数字の仕様は可能

■数字から始めることはできない

■予約語は使用できない

 

参照:字句文法

-leaning diary, Rails