使うという認識で問題ないはずです。スコープスコープは変数や関数が使用できる範囲です。持つ{}内のブロックスコープがあります。ブロックスコープを持たないため、変数に再代入があると影響範囲が大きくなります。ループ処理中に意図しない変数の上書きが起きにくいことです。順番に数値が並びそうに思います。すればこの問題は解決します。0,1,2...となります。IIFE(即時関数)が上記リンク先で紹介されていますので興味があれば参照してください。使う場合、どこかの処理で値が再代入されることを意味します。正しく使い分ければコード中のヒントとなります。変数にエラーを出すこともできます。慣れるまではツールにコードの書き方を教えてもらうのも手です。データは大きく、プリミティブとオブジェクトに分類されます。MDNプリミティブに分類される、例えば文字列や数値はとても直感的な動作をします。一方でオブジェクトの振る舞いは注意して使用しないと思わぬ不具合を出してしまいます(後述)。再代入が不可で読み取り専用という点です。変数には型の指定はありません。宣言すれば自由に型の違う値を再代入できます。データ型に分類される値は固定値として使用できます。Array(配列)といったオブジェクトを同じように扱う使うことはできません。再代入はできませんが、プロパティを変更することが可能だからです。[24,2,3,4,5]オブジェクト型の振る舞いについてもう少し掘り下げます。オブジェクト型の値の比較、コピーについてプログラム中で値の比較やコピーは良く行う処理です。同じ文字列かを比較するなら===や==で比較可能です。console.log("同じ値")}しかし、配列やオブジェクトはこのようにはいきません。違うものと判定されます。同じ配列とは何でしょうか。同じ配列と出力されるこのように元の配列を代入すれば同じ配列として扱われます。比較されているのは中の値ではなく、配列がメモリのどこに保存されているかだからです。違う配列と出力される空の配列を2つ宣言しました。直感的にはこれらは同じですが、別のメモリ空間にそれぞれの変数が格納されているので違う配列となります。一方で、同じ配列というのは完全に同じものです。これは意図した動作でない限り不具合の要因で、コードが大きくなるほどデバッグが難しくなります。これらとは別での配列です。例は全て配列で行いましたが、これはプリミティブなデータ型ではないオブジェクトでも同様です。hanakoオブジェクトをコピーする時は新しいオブジェクトを作る現実的には、同じ配列をコピーしながらプロパティを共有して変更していく実装はレアなケースでしょう。オブジェクト型の難しいところは、そうしたくない状況で、意図せず同じオブジェクトをコピーしてしまうところにあります。ユーザー情報のオブジェクトがあるときを考えます。"suzuki";ユーザー情報を追加する、あるいは変更するときに同じ配列を使ってしまうと全て同じオブジェクトになります。コピーしたあとに別々のオブジェクトとして扱いたいなら、新しくオブジェクトを作成する関数を使用してオブジェクトをコピーします。いった関数も良く使われます。全て同じではないオブジェクトとなります。良いところは、コピーしながら情報の一部だけ更新するときの表記が分かりやすいところです。新しいオブジェクトを作成しながらコピーすることで、意図しないデータの変更を阻止しやすくなります。ドキュメントが特に参考になります。コード例をみればオブジェクト型のコピーは必ずこのように新しいオブジェクトを返す関数が使われているはずです。ここまででも慣れが必要な内容ですがまだ注意することがあります。copyしたオブジェクトを作成する点です。ついて先程の例はデータ階層が浅く問題ありませんでした。情報の中に住所があり、オブジェクト型がネストしているケースを考えます。名前は別々ですが住所は同時に変更されてしまいました。されたオブジェクトはネストした部分は同じオブジェクトのままです、よって変更が共有されます。Osakaこのように新しいオブジェクトを作るのは簡単なようで難しいです。コピーせずにオブジェクトを普通に新規作成して書き直す手もあります。それはデータ変更に弱くなり、データ更新時にどこが変更したのかも分かりづらくなります。データが増える毎に型情報なしでは要素の確認だけで大変です。メール、電話、ニックネーム、sns...と増えていき、データに親子関係が出てくる状況は用意に想定できます。データをコピーし、必要な部分だけ書き換えるのは効率的で分かりやすいコードになります。以外が変更されないことがすぐわかります。"suzuki"}オブジェクト型は非常に便利ですが、複雑なデータ構造になるとデータ更新時に意図しない動作を起こしやすいデメリットもあります。いった様々な工夫ができるライブラリも存在します。const変数には様々なデータが入ります。変数の理解は、変数に入るデータのことも理解してようやく理解かなと考えたりします。今回は紹介しませんでしたが変数に関数を代入する機会も多く、関数も含めて変数の理解とするなら変数を理解するのは本当に最後の最後で、そんな日が果たして訪れるのか。それはそれで別の内容だろうと考えを変えるのかは不明です。自分の習熟度が上がり、また振り返る時がきたら記事を書き直すか追記します。hidekazooTwitterJavaScriptやPHPなどプログラム関係やDockerといった開発環境など、ITエンジニアとして興味あることを紹介しているサイトです。