programing

JSLint 메시지:미사용변수

newsource 2023. 10. 12. 23:20

JSLint 메시지:미사용변수

JSLint가 다음과 같은 시나리오에서 "i"가 사용되지 않는 변수라고 불평할 경우 어떻게 해야 합니까?

var items = "<option selected></option>";
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

(i, item)은 매개변수의 필수 순서이며 저는 "item"만 사용하고 있습니다.

사용하지 않는 변수를 허용하거나 $.each를 다시 작성하여 인덱스를 사용하는 것 외에 다른 해결책이 있습니까?

미리 감사드립니다.

업데이트: 모든 제안에 감사하지만 이 코드는 단순히 내가 의미하는 바를 보여주기 위한 예시이며 일반적인 해결책이 있다면 보고 싶습니다.감사해요.

시도:

var items = "<option selected></option>";
/*jslint unparam: true*/
$.each(data, function (i, item) {
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});
/*jslint unparam: false*/  // so that you still get warnings from other functions

는 이것이 새로운 것이라고 생각합니다: http://www.jslint.com/help.html

"JSLint에서 새로운 예약어가 나왔습니다: ignore"

따라서 위의 내용은 다음과 같습니다.

$.each(data, function (ignore, item) {

i => 무시... 너무 쉽습니다.나머지 코드는 그대로 유지할 수 있고 브라우저는 행복하고 JSLint는 행복합니다.


이전(오답) 답변:

JSLint와 브라우저를 모두 배치하려면 다음과 같이 하십시오.

function (d, i) {
        if (undefined !== win.undefined) {
            undefined(d);
        }
        return (i);
}

함수가 정의되지 않아 브라우저가 "undefined(d)"에서 충돌했습니다.따라서 브라우저에 있는 경우 "undefined !== win.undefined"는 행을 건너뜁니다.

이렇게 할 수 있습니다.

var items = "<option selected></option>";
$.each(data, function () {
    var item = arguments[1];
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

...하지만 저한테 물어보시면 아마 더 안 좋을 겁니다.

자체 문서화 방식으로 경고를 제거할 수 있는 방법은 다음과 같이 사용되지 않는 변수를 사용하게 하는 것입니다.

// Utility function in project scope:
function unusedVariables(/* Put all your deliberately unused variables here */) {
    // pass
}

// And then, later:
var items = "<option selected></option>";
$.each(data, function (i, item) {
    unusedVariables(i); //< This is the new and magical line
    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

물론 이제는 변수를 사용하지 않는 것으로 표시하고 어디선가 사용하는 상황에 들어갈 수 있습니다.또한 이 방법은 문맥에 따라 너무 장황할 수 있습니다.

이 방법은 정밀하다는 장점이 있습니다.사용./*jslint unparam*/너무 넓을 수도 있습니다.

사용해보는건 어떨까요.void당신이 의도적으로 변수를 사용하지 않는다는 것을 명시하는 것?

$.each(data, function (i, item, any, other, unused, vars) {
  void(i, any, other, unused, vars);
  items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
});

이 기능은 덮어쓸 것으로 예상되는 추상 함수에서도 유용하지만, 서명을 표시하거나 인수를 무시하고 있지만 모의 함수의 서명을 일치시키려는 모의 함수에서도 유용합니다.

"i"를 "unused"로 이름을 바꿉니다.여전히 오류가 분명하게 남지만, 목록에 있는 오류를 보고 해당 오류를 "확인"했고 문제가 없다는 것을 알고 있습니다.

어레이/오브젝트를 변환하는 이 특별한 경우 http://api.jquery.com/jquery.map/ (또는 http://api.jquery.com/map/ ?)은 옵션입니다.

var items = "<option selected></option>" + $.map(data, function (item) { 
    return "<option value='" + item.Value + "'>" + item.Text + "</option>";
}).get().join('');

함수에 둘 이상의 미사용 파라미터가 있는 경우 다음과 같이 "ignore"를 사용할 수 있습니다.

function (ignoreFoo, ignoreBar, baz) {
}

단순히 예약어 "ignore"(ignore, ignoreFoo, ignoreBar, ignoreBar, ...)로 시작해야 합니다.

언급URL : https://stackoverflow.com/questions/6583623/jslint-message-unused-variables