2012-09-02 5 views
2

가능한 중복은 "배열 리터럴 표기법을 사용"jslint 오류를 방지하는 방법 :
What's wrong with var x = new Array();다음과 같은 자바 스크립트 코드에

if (!Number.prototype.toZeroPaddedString) { 
    Number.prototype.toZeroPaddedString = function (count) { 
    "use strict"; 
    var str = this.toString(); 
    return (new Array(count + 1 - str.length)).join('0') + str; 
    }; 
} 

내가 내 코드에 의해 깨끗하게 할을 그러나 jsLint 표준을 사용하면 원하는 오류를 없애는 방법을 상상할 수 없습니다.

어떤 조언이 필요합니까?

감사합니다.

+1

전혀합니다. 내 케이스에서 언급 한 질문에 대한 답을 정확히 어떻게 적용 할 계획입니까? – mark

+0

죄송합니다.이 질문의 깊이를 알지 못했습니다. – jeremy

+0

그리고 탭이나 4 칸 대신에 2 칸을 깔끔하게 정리하십시오. – Elieder

답변

0

이 시도 :

if (!Number.prototype.toZeroPaddedString) { 
    Number.prototype.toZeroPaddedString = function (count) { 
    "use strict"; 
    var str = this.toString(); 
    var ary = []; 
    ary.length = count + 1 - str.length; 
    return ary.join('0') + str; 
    }; 
} 
5

Crockford (정당하게)는 new 키워드를 좋아하지 않으므로 배열 리터럴 표기법은 new Array()을 사용하는 대신 사용할 수 있습니다. new Object()에 대한 리터럴 표기법이 {} 인 것처럼 표기법은 []입니다. 어레이의 길이가 원하는대로되도록하려면 .length을 어레이에 설정할 수 있습니다.

return (new Array(count + 1 - str.length)).join('0') + str; 

사람 :

var arr = []; 
arr.length = count + 1 - str.length; 
return arr​.join('0') + str; 
+2

필자는 잘못 생각 했겠지만,'new Array (someNumber)'는 정의되지 않은 요소가있는 * length *'someNumber' 배열을 생성한다는 점에서 new array (elem1, elem2, ...)와 다릅니다. – delnan

+0

새로운 배열 (2) === [undefined, undefined]''[2]'는 단지'[2]'입니다. 귀하의 답변은 오도 된 것 같습니다. – mark

+0

@delnan의 혼란을 가져 주어서 죄송합니다. 내 게시물 인 Mark를 업데이트했습니다. – jeremy

관련 문제