ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でのグローバルな名前空間汚染を回避するにはどうすればよいでしょうか?

JavaScript でのグローバルな名前空間汚染を回避するにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-27 01:14:101019ブラウズ

How Can We Avoid Global Namespace Pollution in JavaScript?

グローバル名前空間汚染の解読

グローバル名前空間汚染は、過剰なグローバル変数が宣言された場合に発生し、競合やコード可読性の低下につながる可能性があります。

ゴミへの影響Collection

グローバル変数は、グローバル名前空間のスコープが失われ、ガベージ コレクションの対象外になるまで存続します。これにより、特に大規模なデータ セットの場合、メモリ リークやパフォーマンスの問題が発生する可能性があります。

グローバル ネームスペースの悪用

複数のグローバル変数の作成は不正行為とみなされます。名前の衝突、上書き、混乱が生じる可能性があります。

例: 悪い習慣

var x1 = 5;
var x2 = 20;
var y1 = 3;
var y2 = 16;

var rise = y2 - y1;
var run = x2 - x1;

var slope = rise / run;

var risesquared = rise * rise;
var runsquared = run * run;

var distancesquared = risesquared + runsquared;

var distance = Math.sqrt(dinstancesquared);

これにより、他のグローバル変数に干渉する可能性がある 11 個のグローバル変数が作成されます。 .

機知に富むアプローチ

モジュール パターンは、変数とメソッドを単一のグローバル オブジェクト内にカプセル化することで、より優れたソリューションを提供します。これにより、他のコードがカプセル化された変数にアクセスしたり変更したりすることがなくなり、グローバル名前空間が保護されます。

例: 改善されたアプローチ

var Calculate = function () {
  // Local variables
  var Coordinates = [];
  var Coordinate = function (xcoord, ycoord) {
    this.x = xcoord;
    this.y = ycoord;
  };

  return {
    // Exposed methods
    AddCoordinate: function (x, y) {
      Coordinates.push(new Coordinate(x, y));
    },

    Slope: function () {
      var c1 = Coordinates[0];
      var c2 = Coordinates[1];
      return (c2.y - c1.y) / (c2.x - c1.x);
    },

    Distance: function () {
      // Local calculations
      var c1 = Coordinates[0];
      var c2 = Coordinates[1];

      var rise = c2.y - c1.y;
      var run = c2.x - c1.x;

      var risesquared = rise * rise;
      var runsquared = run * run;

      var distancesquared = risesquared + runsquared;

      var distance = Math.sqrt(distancesquared);

      return distance;
    }
  };
};

// Self-executing closure
(function () {
  var calc = Calculate();
  calc.AddCoordinate(5, 20);
  calc.AddCoordinate(3, 16);
  console.log(calc.Slope());
  console.log(calc.Distance());
})();

このアプローチは、アクセスを制限することでグローバルな汚染を軽減します。 Calculate オブジェクト内の変数とメソッドに適用されます。

以上がJavaScript でのグローバルな名前空間汚染を回避するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。