Edited at

JSでグローバル汚染してる変数一覧を取得する

More than 1 year has passed since last update.

今、グローバル汚染してる変数はなにか?

と思ってみるとき、たぶんconsole.log(window)とかしてwindowのプロパティを見ると思います。

ただプロパティ多すぎて、どれがもともとのプロパティで、どれが汚染してる変数だ??

となると思います。

そんな時に使えるコードです


用途

私は主に以下の2点の用途で使います。


  1. 悪いグローバル変数を見つける

  2. フレームワークやライブラリが使ってるグローバル変数を見つける

特に2番目の用途でよく使いますね。


コード

以下を実行すればconsoleに表示されます


js

console.log((function(){

var propsOrig = [];
var propsGlobal = {};
var win = window.open();
for(var i in win){
propsOrig.push(i);
}
win.close();
for(var i in window){
if(!propsOrig.includes(i)){
propsGlobal[i] = window[i]
}
}
return propsGlobal;
})())

何かしらのライブラリやサンプルのコードを読んだり実際に使うときに役に立ちます。

ただwindow.openで新しく開いているのでちょっとイケてないかなぁと思っています。

もっと良い書き方がありましたら教えてくださいませ。