在 Stefanov 的《JS 设计模式》一书中,他写道“你使用一个 var 语句并声明多个以逗号分隔的变量”,然后给出了“单个 var”模式的示例,如下所示:
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
Stefanov 还写道:
- “在声明变量时也使用初始值初始化变量是一个很好的做法。”
- “你也可以在声明的时候做一些实际的工作,比如前面代码中 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 单一 var 模式的完全重复。我超载了吗?因为我问的是一般的缺点,而不是我的代码可能有什么问题。
我想我可以看到一个普遍的缺点是无法检查错误,例如在我的示例中,我在从 record.get 预期返回的字符串上调用 trim(),但如果返回 undefined,则“无法调用方法在未定义的对象上”(或任何它是;)将被抛出。有人能想到别的吗?