[javascript] JSLint에 “기수 매개 변수 누락”이 표시됩니다.

이 JavaScript 코드에서 JSLint를 실행했으며 다음과 같이 말했습니다.

32 행 문자 30 문제점 : 기수 매개 변수가 누락되었습니다.

이것은 문제의 코드입니다.

imageIndex = parseInt(id.substring(id.length - 1))-1;

여기서 무엇이 잘못 되었습니까?



답변

항상 parseInt로 기수를 전달하는 것이 좋습니다.

parseInt(string, radix)

십진수의 경우-

parseInt(id.substring(id.length - 1), 10)

기수 매개 변수를 생략하면 JavaScript는 다음을 가정합니다.

  • 문자열이 “0x”로 시작하면 기수는 16 (16 진수)입니다.
  • 문자열이 “0”으로 시작하면 기수가 8 (8 진수)입니다. 이 기능은 더 이상 사용되지 않습니다
  • 문자열이 다른 값으로 시작하면 기수가 10 (10 진수)입니다

( 참조 )


답변

이 경고를 피하려면 다음을 사용하십시오.

parseInt("999", 10);

다음과 같이 교체 할 수 있습니다.

Number("999");

parseInt와 Number의 동작서로 다르지만 경우에 따라 하나가 다른 것을 대체 할 수 있습니다.


답변

나는 질문에 올바르게 대답하지는 않지만 왜 기수를 지정 해야하는지 분명히하는 것이 합리적이라고 생각합니다 .

MDN 문서에서 다음을 읽을 수 있습니다.

기수가 정의되지 않거나 0 (또는 부재) 인 경우 JavaScript는 다음을 가정합니다.

  • […]
  • 입력 문자열이 “0”으로 시작하면 기수는 8 (8 진수) 또는 10 (10 진수)입니다. 어떤 기수가 선택되는지는 구현에 따라 다릅니다. ECMAScript 5는 10 (10 진수)이 사용되도록 지정하지만 모든 브라우저에서 아직이 기능을 지원하지는 않습니다. 따라서 parseInt를 사용할 때는 항상 기수를 지정하십시오.
  • […]

출처 : MDN parseInt ()


답변

해당 테스트를 건너 뛰려면이 규칙을 해제 할 수 있습니다.

끼워 넣다:

radix: false

파일 의 ” rules“속성 아래tslint.json

이 예외를 이해하지 못하면 그렇게하지 않는 것이 좋습니다.


답변

JS 파일 위에 다음을 추가하면 JSHint가 기수 경고를 억제하도록 지시합니다.

/*jshint -W065 */

참조 : http://jshint.com/docs/#options


답변

+ foo를 사용하여 문자열을 변환하여 해결했습니다.

가독성 (더러운 수정)에는 좋지 않습니다.

console.log( +'1' )
// 1 (int)

답변

parseInt 줄 바로 위에이 줄을 추가 할 수도 있습니다.

// eslint-disable-next-line

그러면 다음 줄에 대한 eslint 검사가 비활성화됩니다. 한두 줄만 건너 뛰어야하는 경우이 옵션을 사용하십시오.