2011-03-04 1 views
6

가능할 때마다 완전 항등 연산자가 선호됩니다. JSLint에 코드를 삽입하고 다음과 같은 피드백을 받았습니다.유형이 동등 할 때 ===를 사용하는 이유는 무엇입니까?

코드 : JSLint에서

function log() { 
    console.log(arguments.length == 1 ? arguments[0] : arguments); 
} 

피드백 :

Problem at line 2 character 34: Expected '===' and instead saw '=='. 

내가 여기 == 이상이 === 어떤 장점을 알고 궁금합니다. 기본적으로 .lengthNumber을, 1Number입니다. 100 % 확신 할 수 있으므로 ===은 여분의 여분 토큰입니다. 또한 형식을 확인하는 동안 형식을 확인하는 동안 형식이 항상 동일하게 나타나면 성능 이점이 없습니다.

여기에 실제로 ===을 사용하는 이유는 무엇입니까?

답변

4

유일한 이유는 당신이하고있는 비교는 강압을 포함 할 수도 있고 그렇지 않을 수도 있습니다. ===을 계속 사용한다면 걱정할 필요가없는 것이 하나 있습니다.

물론 not everyone agrees입니다. 따라서 JSlint에서 disable specific checks을 수행 할 수 있습니다. 수행중인 작업을 확신 할 수 있습니다.

+0

나는 어리 석지 만, 옵션 페이지가'==='/'=='에 대한 옵션을 가지고 있는지 말해 줄 수 있습니까? – pimvdb

+0

어 ... 옛날에 가지고 있었어요. 'eqeqeq'라고 불렀지 만 이제는 찾을 수 없습니다. – Andrea

+1

eqeqeq 및 추가 옵션 확장은 http://jshint.com/에 있습니다. –

1

length 기능이 잘 테스트되었으므로 꼭 필요한 것은 아닙니다. 그러나 length이 약간 버그가 있으면 false을 반환 할 수있는 기회가 있었습니까?

이 경우 0false은 모두 == 비교를 사용하면 false로 평가됩니다. false를 테스트하려면 0이 반환 될 가능성이있는 경우 ===이 들어있는 데이터 유형도 확인해야합니다.

1

음, ===은 (유형 불일치에서) 더 빨리 실패 할 수 있기 때문에 극도로 빠르지 만 "무의미한 미세 최적화"영역 깊숙한 곳입니다.

현실적으로 105 % 확실하다고해도 ===에 대한 조언을드립니다. 내 가정에 너무 많이 걸려 넘어졌습니다 ("그렇습니다, 나는 긍정적입니다 ... 같은 ... 어 ... "). 그 (것)들을 끄는 정당한 이유가없는 한, 당신의 마음에서 그 (것)들을하기 위하여 신망 검사가 코드에서 가능하게하는 것이 신뢰를 유지하는 것이 낫다.