• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

JavaScriptのスコープと再宣言を復習しよう!

2018年6月20日

  • このエントリーをはてなブックマークに追加

こんにちは、Webプログラマの篠田です。

先日、社内でJavaScriptの勉強会を行いました。

その中で、社内でのJavaScriptのルールを用意しようということになり、ベースとなる基準を「ES2015(ES6)」で作っていこうかと考えています。

その中で、今回はJavaScriptの変数のスコープと再宣言に関して、復習を兼ねてまとめていきます。

この記事の目次

  • 1 「ES2015(ES6)」とは?
  • 2 スコープを意識して「let」に切り替える
  • 3 再宣言予防としての「let」
  • 4 まとめ

「ES2015(ES6)」とは?

ECMAScript(エクマスクリプト)というJavaScriptの標準規格があります。

「ES2015」というのは、ECMAScriptのバージョン6(6th Edition)が標準化された名称となります。

エンジニアの中では、「ECMAScript 6th Edition」の方が浸透しているため「ES6」と表記されていることが多いです。

「ES2015(ES6)」は、新しい機能や構文が追加されており、昔からのJavaScriptの常識と異なっている部分もあります。

変数の取り扱いに関して、「ES2015(ES6)」ではスコープを意識した書式を求められます。

スコープを意識して「let」に切り替える

JavaScriptの変数宣言といえば「var」を使うのがお決まりでした。

ですが、「var」を使った変数には、「var」で定義された変数を含む関数全体で利用可能となり、厳密なスコープの制約をうけませんでした。

これは、融通が効くという捉え方もできますが、潜在的なバグを内包するという危険性も含まれています。

「ES2015(ES6)」では、より厳密なスコープを意識させた構造を求められます。

そこで、厳密なスコープの制約を変数に設けるのに利用するのが「let」です。

「let」で定義された変数は、定義された「ブロック」内でのみ有効となります。

「var」を使ったスコープの例

「var」を使ったスコープ例です。

JavaScript
1
2
3
4
5
6
7
8
9
10
    varTest();
 
    function varTest() {
        var x = 21;
        if (true) {
            var x = 41;  // 同じ変数
            console.log(x);  // 41
        }
        console.log(x);  // 41
    }

「var」で定義された「x」の値が条件分岐のブロックを抜けても、値が維持されていることがわかります。

「let」を使ったスコープの例

「let」を使ったスコープ例です。

JavaScript
1
2
3
4
5
6
7
8
9
10
    letTest();
 
    function letTest() {
        let x = 21;
        if (true) {
            let x = 41;  // 同じ変数
            console.log(x);  // 41
        }
        console.log(x);  // 21
    }

「var」とは異なり、ブロック内とブロック外で「x」の値が異なります。
これは、ブロック内で定義された変数の有効範囲が、ブロック内で収まっていることがわかります。

このように、「let」を使うことで、プログラムの動きをスコープをもとに意図した動きを制御することができるようになります。

再宣言予防としての「let」

「let」のもう1つの効果として「再宣言予防」があります。

「var」を使った再宣言の例

JavaScript
1
2
3
var x = 2;
var x = 4;
console.log(x);

このプログラムは、正しく動き「4」が表示されます。
ただし、「x」が複数回宣言されているという厳密な言語を扱ってきた方にとっては気持ち悪い書き方だと思います。

「let」を使った再宣言の例

JavaScript
1
2
3
let x = 2;
let x = 4;
console.log(x);

このプログラムを実行すると、下記のようなエラーが表示されます。

1
Uncaught SyntaxError: Identifier 'x' has already been declared

このエラーは、変数「x」はすでに宣言されているというエラーです。

このことから、「let」を利用することで再宣言を行えなくすることができ、
不用意な上書きを避けることができるようになります。

まとめ

これまでに作成してきたプログラムを急に「var」から「let」に書き換えると
思わぬエラーが発生するようになる可能性があります。

それは、スコープや再宣言といったことを意識せずに作ってきた証明かもしれません。

「let」を利用することで、「var」より強固なプログラムを書くことができるようになります。

ぜひ、新しいJavaScriptの書き方を試して、よりバグの少ないプログラムを書いていきましょう!

 


現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。

ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。

・ALAKIのWebシステム開発

・ALAKIのクラウド型受発注システム

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • 08fcf6e1f27d6947fe7719c898a78c8c_m

    CLOUD FLAREとIPアドレスの関係を理解しよう

    6 10月, 2017

  • python-logo-master-v3-TM

    macにpythonの開発環境を作ってみよう!

    1 1月, 2023

  • 13993703_xxl

    PHPで「昨日」の日付けを簡単に取得する方法

    3 2月, 2017

  • Next story WebVRはじめてみませんか?〜第5回 A-Frameでテキストを扱う〜
  • Previous story WebVRはじめてみませんか?〜第4回 サンプルで学ぶA-Frameの使い方〜

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.