0

こうすることでなんとなく違和感や汚れを感じますが、exportやwindowを使うよりはセマンティックな感じです。これでよろしいですか?

(function(global){
  var foo,bar;
  foo = 'Private Var';
  global.bar = 'Hello World';
})(window);
4

3 に答える 3

2

これを行うことで、window のエイリアスを作成するだけで、置き換えるのではありません。私はスタイルが好きです。「グローバル」はあなたの意図をより明確にします。

于 2012-11-12T19:51:25.753 に答える
2

あなたのパターンは大丈夫です。ただし、これを考慮してください。

// global code

(function () {

    var root = this;

    // use root variable to refer to the global object

}).call( this );

"window"このパターンは名前に依存しないため、移植可能です。"root"(もちろん、名前は任意です。)

于 2012-11-12T19:54:41.727 に答える
0

他の人が言ったように、あなたは を置き換えているのではなくwindow、そのエイリアスを作成しているだけです。
あなたのパターンは良いですが、私は少し提案したいと思います: グローバル コンテキストでその IIFE を実行している場合は、window ではなく引数 thisとして渡す必要があります。global

(function(global){

})(this);  

これは、windowオブジェクトが存在しない、またはオブジェクトがあなたが望むグローバルオブジェクト。

于 2013-01-06T11:23:56.517 に答える