[javascript] 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) {
나는 => 무시 … 너무 쉽습니다. 나머지 코드는 동일하게 유지 될 수 있으며 브라우저는 만족스럽고 JSLint는 만족합니다.
이전 (잘못된) 답변 :
JsLint와 브라우저를 모두 게시하려면 다음을 사용해야합니다.
function (d, i) {
if (undefined !== win.undefined) {
undefined(d);
}
return (i);
}
undefined가 함수가 아니기 때문에 브라우저가 “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”를 “사용하지 않음”으로 이름을 바꿉니다. 여전히 오류가 분명하게 남아 있지만 목록에서 오류를보고 해당 오류를 “확인”했으며 괜찮다는 것을 알고 있습니다.
답변
배열 / 객체 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('');