2012-09-27 2 views
11

나는 코딩 다음JSLint가 "typeof ... = undefined '"대신에 "=== undefined"를 사용하는 이유는 무엇입니까?

showTitles = (typeof showTitles !== 'undefined') ? showTitles : 'Y'; 
showSelectGroup = (typeof showSelectGroup !== 'undefined') ? showSelectGroup : 'Y'; 

을하지만 JSLint가 말하는 :

Warning 3 JS Lint: Unexpected 'typeof'. Use '===' to compare directly with undefined.

가 어떻게 코드를 변경해야합니까?

showTitles = (showTitles === undefined) ? 'Y' : showTitles; 
showSelectGroup = (showSelectGroup === undefined) ? 'Y' : showSelectGroup; 

jslint를 사용하여 아마

+2

나는 jslint에 대해 아무것도 모른다. 그러나 나는 이것을 할 것을 당신에게 말하는 것이라고 생각한다 :'(showtitles === undefined)'. – Travesty3

+1

그것은 메시지에서 : 'Use'=== 'undefined와 직접 비교하기 위해서'라고 말합니다. –

+0

'예기치 않은 'typeof''가 문제이며'! =='는 문제가 아닙니다. – Blazemonger

답변

6

참고로 써서,

그러나 그와 아무 문제 (showTitles 가정 및 showSelectGroup VAR로 선언된다)이 없습니다 이것이 최선의 관행인지의 여부는 논쟁의 여지가 있지만, JSLint와 함께 작동하게하려면 이것을 할 수 있습니다.

showTitles = (showTitles !== undefined) ? showTitles : 'Y'; 
+0

그래서 형식이 필요하지 않습니까? –

+1

@Marilou 엄격한 비교를 사용하지 않는 경우. 즉, 나는 그것에 대한 연구를하고 JSLint의 "충고"를 맹목적으로 따르지 않고 자신을 위해 그런 식으로 일하기를 원하는지 여부를 결정하도록 장려 할 것입니다. –

+0

노드에서 "ReferenceError : showTitles가 정의되지 않았습니다." –

8

내가

var showTitles = showTitles || 'Y'; 
var showSelectGroup = showSelectGroup || 'Y'; 
5

이 메시지는 최신 우수 사례를 반영합니다. ES5 엄격 모드에서 글로벌 값은 undefinedcan no longer be changed이고 직접 비교는 코드가 간단하고 빠릅니다. 간단히 말해 JSLint is aware of all this이며 좋은 조언을 제공합니다.

이 경우 typeof showTitles !== 'undefined'showTitles === undefined으로 변경하십시오.

관련 문제