グローバル変数について
- すべてのJavaScriptの実装環境は必ず一つグローバルオブジェクトを持たなければなりません.
- Webブラウザでの実装の場合
window
が、Node.jsの場合はglobal
がグローバルオブジェクトとなります.
問題
(() => { let x = (y = 10); })(); console.log(typeof x); console.log(typeof y);
- 変数
y
はグローバルオブジェクトのプロパティとなるらしい, はて...
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