Stefanov의 JS Design Patterns 책에서 그는 "하나의 var 문을 사용하고 여러 변수를 쉼표로 구분하여 선언합니다"라고 쓰고 다음과 같이 "단일 var"패턴 예제를 제공합니다.Javascript의 단점 "단일 var 패턴"
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
스테파노는 추가로 기록 :
- 는 "그것은 또한 당신이 그것을 선언 할 때 초기 값으로 변수를 초기화하는 것이 좋습니다."
- "앞의 코드에서 sum = a + b의 경우와 같이 선언 할 때 실제 작업을 수행 할 수도 있습니다."
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 };
: 이제 다음과 같이
나는 하나의 VAR 패턴 변수의 동일한 수를 선언하지만, "선언시 실제 작업"꽤 많은 일을, 어떤 코드가 선언시 실제 작업을 너무 많이하는 것의 단점은 무엇입니까? BTW 나는이 코드를 Javascript single var pattern. Am I overloading it?의 정확한 복제본으로 생각하지 않습니다. 일반적인 코드 단점보다는 일반적인 단점에 대해 묻기 때문입니다.
나는 일반적인 불리한 점이 오류를 검사 할 수 없다는 것을 알 수 있다고 생각한다. 예를 들어 내 예제에서 record.get에서 기대되는 문자열에 대해 trim()을 호출하는 경우와 같이 undefined가 반환되면 "can '정의되지 않은 객체에 대한 메소드 호출'(또는 그것이 무엇이든)이 던져 질 것입니다. 아무도 다른 생각을 할 수 있습니까?
'trim()'의 문제는 전달되는 문자열이 문자열인지 아닌지를 확인하는 자체 trim 함수를 작성할 수 있습니다. – slebetman
@slebetman - 당신은 함수가 필요 없다 :'(record.get ('SRC_SUP_LOC') || "") .trim()'(질문에 따라'.get 문자열 또는 정의되지 않음/널). – nnnnnn