こうすることでなんとなく違和感や汚れを感じますが、exportやwindowを使うよりはセマンティックな感じです。これでよろしいですか?
(function(global){
var foo,bar;
foo = 'Private Var';
global.bar = 'Hello World';
})(window);
こうすることでなんとなく違和感や汚れを感じますが、exportやwindowを使うよりはセマンティックな感じです。これでよろしいですか?
(function(global){
var foo,bar;
foo = 'Private Var';
global.bar = 'Hello World';
})(window);
これを行うことで、window のエイリアスを作成するだけで、置き換えるのではありません。私はスタイルが好きです。「グローバル」はあなたの意図をより明確にします。
あなたのパターンは大丈夫です。ただし、これを考慮してください。
// global code
(function () {
var root = this;
// use root variable to refer to the global object
}).call( this );
"window"
このパターンは名前に依存しないため、移植可能です。"root"
(もちろん、名前は任意です。)
他の人が言ったように、あなたは を置き換えているのではなくwindow
、そのエイリアスを作成しているだけです。
あなたのパターンは良いですが、私は少し提案したいと思います: グローバル コンテキストでその IIFE を実行している場合は、window ではなく引数 this
として渡す必要があります。global
(function(global){
})(this);
これは、window
オブジェクトが存在しない、またはオブジェクトがあなたが望むグローバルオブジェクト。