' P '

whatever I will forget

JavaScript グローバル変数

グローバル変数について

  • すべてのJavaScriptの実装環境は必ず一つグローバルオブジェクトを持たなければなりません.
  • Webブラウザでの実装の場合windowが、Node.jsの場合はglobalがグローバルオブジェクトとなります.

問題

(() => {
  let x = (y = 10);
})();

console.log(typeof x);
console.log(typeof y);
  • 変数yはグローバルオブジェクトのプロパティとなるらしい, はて...

varで宣言 / var無しで宣言の違い

varで宣言

  • グローバルスコープでvarを使って変数宣言するとグローバル変数の宣言となり、同時にグローバルプロパティを生成します.
var test = 1;
console.log(window.test); // 1

varで宣言しない

  • varなしで変数定義をすると、まずスコープチェーンをたどって宣言した変数名を検索します.
  • 見つからなかった場合、グローバルスコープにプロパティを追加します(グローバルプロパティの生成
var myFunc = function() {
    test = 1;
}();

console.log(window.test); // 1

参考

https://kde.hateblo.jp/entry/2017/06/25/205733

削除について

  • const, var, letで宣言された変数はdeleteで削除できない.
  • var無しで宣言された変数は削除が可能.
    • グローバルオブジェクトからもプロパティを削除することができるため.
var name = "Lydia";
age = 21;

console.log(delete name); // false
console.log(delete age); // true