0

一意の変数 (およびそれらの多く) に焦点を当てたJavaScript で複数の変数を宣言するのような投稿を見てきましたが、一意でない変数をたくさん見ています。

            var rep;
            var state_def, state_MA, state_WY, state_TN = 'joeblow';
            var state_AZ, state_TX = 'moefoe';
            var state_MT, state_OR = 'growmo';
            var state_OK, state_LA = 'billyjoe';
            var state_WA, state_NM, state_MS = 'messytess';
            var state_VA, state_NY = 'slickrick';
            var state_CA = 'icecube';

            //or
            var state_def = state_MA = state_WY = state_TN = 'joeblow';

理解するために、私はそのようなスイッチを使用しています...

switch (capitalise(data.regionName)) {
                case 'Arizona': rep = state_AZ; break;
                case 'Texas': rep = state_TX; break;
                case 'Montana': rep = state_MT; break;
                case 'Oregon': rep = state_OR; break;
                case 'New Mexico': rep = state_NM; break;
                case 'Mississippi': rep = state_MS; break;
                case 'Oklahoma': rep = state_OK; break;
                case 'Louisiana': rep = state_LA; break;
                case 'Washington': rep = state_WA; break;
                case 'Massachusetts': rep = state_MA; break;
                case 'Wyoming': rep = state_WY; break;
                case 'Tennessee': rep = state_TN; break;
                case 'Virginia': rep = state_VA; break;
                case 'Illinois': rep = state_IL; break;
                case 'Nevada': rep = state_NV; break;
                default: rep = state_def; break;
            };

これには数千の郵便番号も含まれるため、このための2番目のスイッチです。そのため、状態 (または zip) 変数とユーザーの関連付けをできるだけ短く宣言する必要があります。しかし、自分が知らないかもしれない落とし穴にはまりたくありません。default: rep = state_def; break;これは、未定義として返されることを除いて、現在機能しています。また、IE8では動作しません。

4

1 に答える 1

4

あなたswitchをマッピングに置き換えることをお勧めします:

var reps = {
    'Arizona': state_AZ,
    'Texas': state_TX,
    // etc.
};

// then you can do this:
var rep = reps[capitalize(data.regionName)];

後で、そのマッピング (値を含む) を JSON オブジェクトとして、またはサーバーやその他のデータ ソースからダウンロードすることもできます。

また、ほとんどのstate_*変数が未定義であることにも注意してください。これがあなたの意図したものかどうかはわかりません。一部の州のデータしかない場合は、データ構造を直接構築する方がよい場合があります。

var reps = {
    'Arizona': undefined, // or just omit from mapping
    'Texas': 'moefoe',
    // etc.
};

すべてのstate_*変数を省きます。

于 2012-11-20T18:32:24.310 に答える