0

次のようないくつかのグローバル ユーティリティ オブジェクトを使用しています。

var StringUtils = {
    // ...
    equalsIgnoreCase: function(string1, string2) {
        return string1.toUpperCase() === string2.toUpperCase();
    }
    // ...
};

この場合の使い方"use strict"は?私は次の方法を試しました:

(function() {
    "use strict";

    var StringUtils = {
        // ...
        equalsIgnoreCase: function(string1, string2) {
            return string1.toUpperCase() === string2.toUpperCase();
        }
        // ...
    };

})();

しかし、ご想像のとおり、StringUtilsはその範囲外では利用できなくなりました。

4

2 に答える 2

1

EMCAScript5 がそれをどのように実装するように指示されているかにより、オプションは制限されています。

グローバルにしたいものを除くすべての関数ブロックを調べて、「use strict」を追加できます。これは面倒かもしれませんが、必要なコード ブロックだけが正格であることを保証します。ただし、JS lint を使用すると「エラー」がスローされます

コードを複数のファイルに分割し、各ファイルで厳格にするファイルとそうでないファイルを指定できます。

最後に、すべての「グローバル」関数をスクリプトの先頭に配置し、その下に「use strict」ステートメントを追加します。それ以下は厳密になります。

3 つのメソッドはすべて、厳密なブロック内から非厳密なオブジェクトにアクセスできます。

コードのブロックに関する限り、js ファイル全体を関数でラップすることをお勧めします。これにより、後方互換性が維持され、ファイル全体で use strict が強制されます。

(function () {
    'use strict';

    // window.StringUtils = { 
    // GLOBAL.StringUtils = {
    var StringUtils = {
        // ...
        equalsIgnoreCase: function(string1, string2) {
            return string1.toUpperCase() === string2.toUpperCase();
        }
        // ...
    };

    // add the rest of your code here
}());
于 2014-08-19T08:14:36.447 に答える