2010-04-14 6 views
1

나는 (아직) JavaScript 전문가가 아니다. 아래 줄 수를 줄이는 방법을 찾아 내려고 노력 중입니다 ... if 문을 사용할 수있는 단축키가 있습니까?코드 줄 줄이기

function showDialog(divID) 
{ 
    var dialogDiv = $("#" + divID); 

    var height = 500; 
    var width = 400; 
    var resizable = false; 

    if (dialogDiv.attr("height") != "") 
    { 
     height = parseInt(dialogDiv.attr("minHeight")); 
    } 

    if (dialogDiv.attr("width") != "") 
    { 
     width = parseInt(dialogDiv.attr("minWidth")); 
    } 

    if (dialogDiv.attr("resizable") != "") 
    { 
     resizable = dialogDiv.attr("resizable"); 
    } 

    dialogDiv.dialog 
    (
     { 
      resizable: resizable, 
      width: width, 
      height: height, 
      bgiframe: true, 
      modal: true, 
      autoOpen: false, 
      show: 'blind' 
     } 
    ) 

    dialogDiv.dialog("open"); 
} 
+1

하나의 참 맞춤 스타일 http://en.wikipedia.org/wiki/Indent_style#Variant:_1TBS – nickf

답변

8

당신은 다음과 같이 조금 아래로 줄일 수 있습니다 :

function showDialog(divID) 
{ 
    var dialogDiv = $("#" + divID); 

    dialogDiv.dialog({ 
      resizable: dialogDiv.attr('resizable'), 
      width: dialogDiv.attr('width') || 400, 
      height: dialogDiv.attr('height') || 500, 
      bgiframe: true, 
      modal: true, 
      autoOpen: false, 
      show: 'blind' 
    }); 
    dialogDiv.dialog("open"); 
} 

이 약하게 입력 된 자바 스크립트 사실을 활용

어느 쪽이 방법 여기 경우 문을 단축하는 방법 중 하나입니다 실제로 그것은 일종의 인권 침해 였지만 작동합니다.

나는 아직도이 방법을 잘 알고 있지만, 구문에 익숙하지 않다면 ... 읽을 수있는 것이 무엇인지 간결하고 무엇이 더 중요한지 결정하는 것이 중요합니다. 많은 경우에있어 절충점이 있습니다.

+0

폭 또는 높이가 0 인 경우는 어떻게됩니까? – Ponkadoodle

+0

@wallacoloo - 답변의 "남용"부분입니다. 'width = "0"'이 속성이거나 너비를 찾지 못하면 각각'400 '또는'500 '이됩니다 ... 아마도 '0'높이 또는 너비 대화 상자 창을 원하지 않을 것입니다. 또한 숨겨진 상태에서'.width()'와'.height()'는 항상'0'을 반환한다는 것에주의하십시오. 그래서 우리는 여기에 속성을 고수하고 있습니다. –

+0

jQuery에는 attr() 메소드보다 조금 더 깨끗한 .width() 및 .height() 메소드가 있습니다. –

2

당신은 사용할 수 있습니다

var x = first || default; 

는 초기화를 할 수 있습니다. 기본적으로 first 값이 참인지 여부를 확인한 다음 x에 할당합니다. 그렇지 않으면 defaultx에 할당합니다. 코드에서 예 : 블록, 당신은 그것을 멀리 주변 브래킷 할 수 있다면 당신은 각각 하나의 문을했습니다 때문에

height = dialogDiv.attr('height') || 500; 

if (dialogDiv.attr("height") != "") 
{ 
    height = parseInt(dialogDiv.attr("height")); 
} 
+0

을 사용하면 JavaScript에서 빈 문자열을 확인할 필요가 없습니다. 기본적으로 boolean으로 확인하십시오. – PositiveGuy

+0

이 필요에 따라 다릅니다. height 나 width와 같은 것들을 검사한다면, 대부분의 경우이 값들을'null','undefined',''','false',''0 '','0'으로 계산할 것입니다 존재하지 않습니다. (예를 들어 0을 사용하는 경우) 그렇지 않을 수도 있으므로 엄격한 검사가 필요할 수 있습니다. 빈 문자열은 Javascript에서 위조 된 값입니다. '(""== false)'는'true'이지만'(""=== false)'는 타입 검사가 추가되어'false'가됩니다. – Anurag

1

를 대체하지만, 이것은 주로 미적입니다.

+0

멋지다, 잘 알고있다 ... 다른 많은 언어와 마찬가지로 JS에서 그렇게 할 수 있다는 것을 몰랐다. – PositiveGuy

0

3 진수 연산자를 사용 하시겠습니까?

조언의 말씀 : 스크립트는 기계가 아닌 사람을 대상으로 작성되었습니다. 사전 최적화 된 코드를 읽거나 이해하는 것보다 코드를 쉽게 읽고 이해하는 것이 더 중요합니다.

height = dialogDiv.attr("height") != "" ? parseInt(dialogDiv.attr("height")) : height; 
width = dialogDiv.attr("width") != "" ? parseInt(dialogDiv.attr("width")) : width; 
resizable = dialogDiv.attr("resizable") != "" ? parseInt(dialogDiv.attr("resizable")) : resizable; 
+0

개발자들은 삼항 연산자에 대해 잘 알고 있다고 생각합니다. 그들이 그렇지 않다면, 힘든 행운. 저는 많은 언어가 그들을 사용하기 때문에 예외를 만듭니다. 우리는 C#에서이를 아주 광범위하게 사용합니다. – PositiveGuy

+0

그래서 기본적으로 C#처럼 보입니다. 거기에 아무런 문제가 없습니다. 삼항 운영자 (Ternary Operators) – PositiveGuy

2
var height = dialogDiv.attr("height") || 500; 
var width = dialogDiv.attr("width") || 400; 
var resizable = dialogDiv.attr("resizable") || false; 
0

하지 마십시오. 자바 스크립트 코드를 가능한 한 읽기 쉽고 유지할 수 있도록 유지하려고합니다. 다운로드 시간을 빠르게하고 JavaScript를 빠르게 만들려고한다면 JavaScript 코드의 복사본 minified을 작성하여 원본 JavaScript 코드를 파괴하지 않아야합니다. 최적화 및 최적화에 관해서는 Google Closure Compiler이 가장 적합한 도구입니다. Google Closure Tools (and Compiler Service)Google Closure Library에 대한 자세한 내용은 링크를 참조하십시오.

+0

나는 동의하지 않는다. 나는이 경우에는 괜찮다. 그리고 가능한 한 개발자가 if 서술문을 줄여야한다고 말한다. JavaScript에서이 작업을 수행하는 방법을 알지 못했습니다. 예를 들어 C# 및 다른 OOP 언어를 예로 들어 보겠습니다. 예, JavaScript는 OOP 언어가 아니지만 바로 가기 개념입니다. 이것은 C#에서 문자열 myString =! string.IsNullOrEmpty (someString)을 수행 할 수있는 것과 정확히 똑같은 작업입니까? someSring1 : someString2; – PositiveGuy

+0

축소로 인해 축소 될 것입니다.하지만 궁극적으로 코드 줄이기 및 축소가 페이지 풋 프린트를 줄이는 데 가장 큰 영향을 미칩니다. – PositiveGuy

+0

@ coffeeaddict에서 클로저 컴파일러는 단순화하지 않습니다. 또한 정적 코드 분석을 수행하고보다 작고 최적화 된 코드를 생성합니다. –