プログラミング教材を使用して勉強しているのですが、その中で、下記のように、HTMLの<script>タグ内に記述しているjavascriptを即時実行関数式で囲っているものがありました。
現在即時実行関数式について調べているのですが、その中で分からないことが2点あります。
①MDNの中で即時実行関数とは「定義されるとすぐに実行される JavaScript の 関数 」と定義されているのですが、その意味は、関数が呼び出されなくても、ロードされれば記述された処理を実行するという意味でしょうか?
②Javasctiptを下記のように即時関数で囲うのは、MDNの内容から、恐らく関数式内の変数に対する外部からのアクセスを防止することだと思っています。他のサイトでは「スコープの汚染を防ぐため」とまで言っています。
汚染とまで言われる、変数を外部からアクセスできなくするメリットは何でしょうか?
参照:https://developer.mozilla.org/ja/docs/Glossary/IIFE
<script> (function () { 'use strict'; var openMenu = document.getElementById('open_menu'); var menu = document.getElementById('menu'); var closeMenu = document.getElementById('close_menu'); openMenu.addEventListener('click', function () { menu.classList.add('shown'); }); closeMenu.addEventListener('click', function () { menu.classList.remove('shown'); }); }()); </script>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/12 03:44