Stefanov の JS Design Patterns book で、彼は「1 つの var ステートメントを使用し、カンマで区切られた複数の変数を宣言する」と書いており、次のように「単一の var」パターンの例を示しています。
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
ステファノフはさらに次のように書いています。
- 「宣言時に変数を初期値で初期化することもお勧めします。」
- 「前のコードの sum = a + b の場合のように、宣言時に実際の作業を行うこともできます。」
これで、次のようなコードができました。単一の var パターンで同じ数の変数を宣言しますが、「宣言時の実際の作業」はかなり多くなります。
var html = '{purchaseQty}<br>FR: {fromLoc}'
,tpl = new Ext.XTemplate(html)
,srcReqLoc = record.get('SRC_REQUEST_LOC').trim()
,srcSupLoc = record.get('SRC_SUP_LOC').trim()
,fromLoc = srcReqLoc ? srcReqLoc : srcSupLoc
,tplCfg = {
purchaseQty: purchaseQty
,fromLoc: fromLoc
};
「申告時の実作業」をやりすぎるデメリットとは?ところで、これはJavascriptの単一変数パターンの正確な複製とは考えていません。私はそれを過負荷にしていますか?私のコードだけで何が問題なのかではなく、一般的な欠点について尋ねているからです。
一般的な欠点は、エラーをチェックできないことであることがわかると思います。たとえば、私の例では、record.get から返されると予想される文字列に対して trim() を呼び出しますが、代わりに undefined が返された場合、「メソッドを呼び出すことはできません。 on undefined object" (またはそれが何であれ;) がスローされます。他に思いつく人いる?