JavaScriptで変数を再宣言するとどうなる?挙動と注意点を解説
JavaScriptでは、varを使って宣言済みの変数を再宣言した場合でも、エラーにはならず、すでに代入されている値はそのまま保持されます。これはJavaScriptの初期の仕様による特徴的な挙動の一つです。
変数を再宣言しても値は変わらない
例を見てみましょう。ここでは変数ageを宣言し、その後に同じ名前で再度宣言しています。
<html>
<body>
<script>
<!--
var age = 20;
var age; // 再宣言しても値は保持される
if( age > 18 ){
document.write("Qualifies for driving");
}
//-->
</script>
</body>
</html>実行結果
このコードを実行すると、次のように表示されます。
Qualifies for driving
2回目のvar age;は新しい宣言として扱われますが、値の代入が行われていないため、最初に代入された20という値がそのまま残ります。そのため、if文の条件age > 18は真となり、メッセージが出力されます。
var・let・constでの違い
再宣言の挙動は、変数の宣言方法によって異なる点に注意が必要です。
- var: 同じスコープ内での再宣言が可能で、エラーにはなりません。
- let: 同じスコープ内での再宣言を行うとSyntaxError(構文エラー)が発生します。
- const: 再宣言は不可であり、値の再代入もできません。
現代のJavaScript開発では、意図しないバグを防ぐために、再宣言が許容されるvarよりも、ブロックスコープを持つletやconstを使用することが推奨されています。
-
JavaScriptのundefined(未定義)とは?変数の判定方法をサンプルコードで解説
JavaScriptのundefined(未定義)は、変数がまだ宣言されていない、あるいは宣言されていても値が代入されていないことを示す特殊な値です。変数の状態を確認したい場面で頻繁に登場するため、初心者の方にとって押さえておきたい重要な概念の一つです。 undefinedの基本的な役割 undefinedは、次のような状況で返される値です。 変数を宣言したものの、まだ値を代入していない場合 存在しないオブジェクトのプロパティにアクセスした場合 関数の引数が渡されなかった場合 以下は、JavaScriptのundefinedを使って、変数が定義済みかどうかを判定する実装例です。 サンプルコ
-
JavaScriptで配列のlengthを0に設定するとどうなる?メモリのクリアと確保の方法を解説
JavaScriptでlengthプロパティを0に設定するとは? JavaScriptでは、配列のlengthプロパティに0を代入することで、配列内の要素をすべて一括で削除できます。この操作は、不要になったデータを破棄してメモリを解放したい場合に便利です。 例として、次のような配列オブジェクトを用意します。 var arrayObject = [ John, David, Mike ]; lengthプロパティによるメモリのクリアと確保 lengthプロパティを使うと、配列の長さを自由に変更できます。0を設定すれば要素がすべて消去され、任意の数値を設定すればその分の領域が確保されま