Programing

JSLint는 "missing radix parameter"라고 말합니다.

lottogame 2020. 2. 13. 00:26
반응형

JSLint는 "missing radix parameter"라고 말합니다. 어떻게해야합니까?


이 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 검사가 비활성화됩니다. 한두 줄만 건너 뛰어야하는 경우이 옵션을 사용하십시오.


parseInt ()는 두 개의 인수를 가지므로 기수 자리에 빈 문자열을 넣으십시오.

parseInt (문자열, 기수);

string 구문 분석 할 값입니다. 문자열 인수가 문자열이 아닌 경우 ToString 추상 연산을 사용하여 문자열로 변환됩니다. 문자열 인수의 선행 공백은 무시됩니다.

기수 위에서 언급 한 문자열의 기수 (수치 체계의 밑)를 나타내는 2에서 36 사이의 정수. 사람이 일반적으로 사용하는 10 진수 시스템에 10을 지정하십시오. 독자 혼란을 제거하고 예측 가능한 동작을 보장하려면 항상이 매개 변수를 지정하십시오. 기수가 지정되지 않은 경우 구현에 따라 결과가 다르며 일반적으로 기본값은 10입니다.

이미지 인덱스 = parseInt (id.substring (id.length-1))-1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;


substring사용할 수 있는 함수를 호출하는 대신.slice()

    imageIndex = parseInt(id.slice(-1)) - 1;

여기서 slice에서 -1은 마지막 인덱스에서 슬라이스를 시작 함을 나타냅니다.

감사.


.eslintrc에 사용자 지정 규칙을 추가하기 만하면 "radix": "off"됩니다. 그러면이 eslint unnesesery 경고가 발생하지 않습니다. 이것은 eslint linter를위한 것입니다.

참고 URL : https://stackoverflow.com/questions/7818903/jslint-says-missing-radix-parameter-what-should-i-do



반응형