2017-02-27 8 views
2

이것은 데이터 속성에서 값을 읽거나 기본값을 사용하는 깔끔한 방법처럼 보인다 :이 jQuery 패턴은 브라우저에서 안전한가요? "attr ('foo') || 'default'"? 그것은 존재하지 있는지

var confirmMessage = resourceDiv.attr("data-confirm-delete-text") || "Delete this resource?"; 

그것은 (속성이 존재하지 않는 경우 반환되는) undefined에 의존하고있는 거짓. 이 브라우저는 안전한 솔루션입니까? 그렇지 않다면 더 좋은 방법이 무엇입니까?

답변

2

예 브라우저 안전합니다. 유효 할 때 위태로운 값 (예 : 0 또는 false)에이 값을 사용하면 안됩니다. 또한이 구조를 사용하는 것을 좋아하지 않는 사람들을 발견 할 수 있지만 브라우저 지원이 아닌 코드 가독성 문제에 주로 사용됩니다.

var confirmMessage = resourceDiv.attr("data-confirm-delete-text"); 
if (!confirmMessage) 
    confirmMessage = "Delete this resource?"; 

또는 삼항 : 당신은, 그들은 훨씬 더 상세하고 삼항의 경우에 볼 수 있듯이

var confirmMessage = resourceDiv.attr("data-confirm-delete-text") ? resourceDiv.attr("data-confirm-delete-text") : 'Delete this resource?'; 

포함 할 수

대안은 if 문이다 약간의 중복.

+0

감사합니다. Rory, 훌륭합니다. 이런 종류의 인스턴스에서는 인터페이스 메시지 (예 :이 인스턴스의 확인)에만 사용되므로 다른 위조 된 값은 걱정하지 않습니다. 건배, 최대 –