[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 */
답변
+ foo를 사용하여 문자열을 변환하여 해결했습니다.
가독성 (더러운 수정)에는 좋지 않습니다.
console.log( +'1' )
// 1 (int)
답변
parseInt 줄 바로 위에이 줄을 추가 할 수도 있습니다.
// eslint-disable-next-line
그러면 다음 줄에 대한 eslint 검사가 비활성화됩니다. 한두 줄만 건너 뛰어야하는 경우이 옵션을 사용하십시오.