En el libro Patrones JS de Stefanov, escribe "usa una sentencia var y declara múltiples variables delimitadas por comas", y luego da un ejemplo del patrón "var individual" de la siguiente manera:Desventajas del "patrón var var" Javascript
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
Stefanov, además, escribe:
- "es una buena práctica para inicializar también la variable con un valor inicial en el momento en que se declara."
- "También puede hacer un trabajo real en el momento de la declaración, como en el caso de sum = a + b en el código anterior".
Ahora tengo algo de código de la siguiente manera, declarando el mismo número de variables con el patrón var sola, pero haciendo un poco más "trabajo real en el momento de la declaración" bastante:
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
};
¿Cuáles son las desventajas de hacer demasiado "trabajo real en el momento de la declaración"? Por cierto, no considero este un duplicado exacto de Javascript single var pattern. Am I overloading it? porque estoy preguntando sobre las desventajas generales, en lugar de lo que podría estar mal con mi código.
Creo que puedo ver que una desventaja general sería la imposibilidad de verificar errores, por ejemplo, cuando en mi ejemplo llamo a trim() sobre cadenas esperadas desde record.get, pero si no se devuelve en su lugar, el 'Método de llamada en un objeto indefinido' (o lo que sea que sea;) será lanzado. ¿Alguien puede pensar en otra cosa?
Para el problema con 'trim()' siempre puede escribir su propia función de recorte que verifique si lo que le ha pasado es una cadena o no. – slebetman
@slebetman - No necesita una función: '(record.get ('SRC_SUP_LOC') ||" "). Trim()' (asumiendo, según la pregunta, que '.get()' devuelve un cadena o indefinido/nulo). – nnnnnn