Nel libro di modelli di JS Design di Stefanov, scrive "si usa un'istruzione var e si dichiarano più variabili delimitate da virgole", quindi viene fornito un esempio del modello "var singolo" come segue:Svantaggi di "pattern var singolo" di Javascript
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
Stefanov scrive inoltre:
- "E 'una buona pratica per inizializzare anche la variabile con un valore iniziale al momento si dichiara."
- "Puoi anche fare un po 'di lavoro effettivo al momento della dichiarazione, come nel caso di sum = a + b nel codice precedente."
Ora ho qualche codice come segue, dichiarando lo stesso numero di variabili con il singolo var pattern, ma facendo un po 'più di "lavoro effettivo al momento della dichiarazione" abbastanza:
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
};
Quali sono gli svantaggi di fare troppo "lavoro effettivo al momento della dichiarazione"? BTW Non considero questo un duplicato esatto di Javascript single var pattern. Am I overloading it? perché sto chiedendo svantaggi generali, piuttosto che cosa potrebbe essere sbagliato solo con il mio codice.
Penso di poter vedere che uno svantaggio generale sarebbe l'incapacità di controllare gli errori, ad esempio dove nel mio esempio chiamo trim() sulle stringhe attese da record.get, ma se invece viene restituito undefined, la "can il metodo 't call su oggetto non definito' (o qualunque cosa sia;) verrà lanciato. Qualcuno può pensare ad altro?
Per il problema con 'trim()' è sempre possibile scrivere la propria funzione di assetto che controlla se ciò che è passato ad esso è una stringa o meno. – slebetman
@slebetman - Non hai bisogno di una funzione: '(record.get ('SRC_SUP_LOC') ||" "). Trim()' (assumendo, come da domanda, che '.get()' restituisca o un stringa o non definito/null). – nnnnnn