Windows.!?あのブラウザ拡張機能内でしか使えないbrowser.Windowsですか?
Windows">https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/Windows
違うよね。window.ですよね。
ブラウザ内で使えてNode.jsでは使えないやつ。
はい、windowにプロパティを生やす(=jsにおけるグローバル変数を宣言する)のは非推奨です。何故なら複数のjsコードがwindow.〇〇に好き勝手に値を出し入れするとバグるからです。今のjsにはいらないというより、変数宣言にはletかconstを使ってください(CDNではjQueryはwindow.$、Lodashはwindow._に関数を入れても許されてる感はあるが……)。
ちなみにトップレベル(コードの1番外側)にて以下のように書くと
A = 1 // window.Aが1になる(悲しい)
var B = 2 // window.Bが2になる(悲しい)
window.C = 3 // window.Cが3になる
function func() {
D = 40 // window.Dが4になる(悲しい)
}
func()
このように、自動的にwindowにプロパティを生やす仕組みが昔からあります。この仕組みは実装後世界中で使われるようになり、恐らく捨てようにも捨てれなくなりました。一方、以下のように書くと
let A = 1
A = 10 // でもwindow.Aはundefinedのまま(嬉しい)
となります。グローバル変数宣言の「A = 10」と再代入の「A = 10」は実質見分けがつきません。よって、\u0026quot;やむを得ず\u0026quot;グローバル変数を宣言したければ、分かりやすさのため「window.A = 10」とすべきです。