development

jslint의 "예기치 않은 ++"오류

big-blog 2020. 6. 16. 07:55
반응형

jslint의 "예기치 않은 ++"오류


그때 가장 좋은 방법 무엇입니까 ?

Jslint는 "혼란을 추가"한다고 설명합니다. 나는 그것을 정말로 보지 못한다 ...

편집 : 요청 된 코드 :

  var all,l,elements,e;
  all = inElement.getElementsByTagName('*');
  l = all.length;
  elements = [];
  for (e = 0; e < l; (e++))
  {
    if (findIn)
    {
        if (all[e].className.indexOf(className) > 0)
        {
            elements[elements.length] = all[e];
        }
    } else {
        if (all[e].className === className)
        {
            elements[elements.length] = all[e];
        }
    }
  }

i += 1jslint의 조언을 따르려면 대신 사용하십시오 .


/*jslint plusplus: true */자바 스크립트 파일 앞에 추가하면 됩니다.


혼동을 피하고 축소기를 사용할 때 발생할 수있는 문제를 피하려면 항상 동일한 연산자 (+ 또는-)와 함께 사용할 때 연산자와 해당 피연산자를 감싸십시오.

var i = 0, j = 0;
alert(i++ +j);

이렇게하면 i 및 j가 추가되고 부작용으로 i가 증가하여 0이 경고됩니다.

그러나 누군가가 와서 우주를 움직이는 것은 무엇입니까?

var i = 0, j = 0;
alert(i+ ++j);

이제 j를 먼저 증가시킨 다음 새로운 j 값에 i를 더하여 1이 경고됩니다.

이렇게하면 쉽게 해결할 수 있습니다.

var i = 0, j = 0;
alert((i++) +j); 

이제 이것은 착각 할 수 없습니다.


개인적으로, 나는 i++그 자체 로 같은 문장을 선호 합니다. 더 큰 진술의 일부로 그것들을 포함 시키면 그 라인이 무엇을해야하는지 잘 모르는 사람들에게 혼란을 야기 할 수 있습니다.

예를 들어,

value = func(i++ * 3);

나는 이것을 할 것이다 :

value = func(i * 3);
i++;

또한 사람들이 방법 i++++i작업 을 기억할 필요가 없으며 매우 많은 기본 설정 규칙을 적용 할 필요가 없음을 의미합니다.


++운영자 의 실제 문제는 부작용이있는 운영자이므로 기능 프로그래밍의 원칙과 완전히 반대되는 것입니다.

" 기능적 "구현 방법 i++i = i + 1부작용없이 변수를 명시 적으로 재 할당 한 다음 사용하는 것입니다.

혼란의 가능성은 ++값을 추가하고 변수에 다시 할당하여 두 가지 작업 수행 한다는 것입니다.


JSLint 친화적 루프

for (i = 0; i < 10; i += 1) {
    //Do somthing
}

++ 연산자는 이전 / 다음 변수 및 개행 / 세미콜론에 대한 위치에 따라 작업 순서를 결정합니다.

var a = 1;
var b = a++;
console.log(b); // b = 1
console.log(a); // a = 2

var a = 1;
var b = ++a;
console.log(b); // b = 2
console.log(a); // a = 2

++ i와 증가 후 i ++라는 사전 증가가 있는데 차이점이 있습니다.

var i = 9;
alert(++i); //-> alerts 10

var j = 9;
alert(j++); //-> alerts 9
alert(j);   //-> alerts 10 now, as expected

var k = 9;
alert((k++)); //-> still alerts 9 even with extra parentheses

참고 URL : https://stackoverflow.com/questions/3000276/the-unexpected-error-in-jslint

반응형