그래, 제대로 읽으십시오. 마지막으로 나는 JavaScript (함수)에서 인수 검증의 다른 패턴을 보았고 그것들 중 어느 것이 베스트 프랙티스가 될지 궁금해했습니다. 처음에는 두 가지 코드 스 니펫 예제를 보여 드리겠습니다. 첫 번째 문장은 "즉각적인"인수/조건 유효성 검사와 두 번째 것은 "지연된"유효성 검사를 보여줍니다. 각각은 다른 방식으로 다음 코드의 모양에 영향을 미칩니다. 지금까지는 항상 "즉각적인"유효성 확인을 사용했습니다. 그러나 천천히 나는 조건부 블록으로 전체 코드를 강제하는 것이 합리적이라면 의심스러워진다. 당신이 생각하는 것과 "가장 좋은"패턴이 무엇인지 말해주십시오. JavaScript에서 인수 유효성 검사를 수행 할 위치는 어디입니까?
그리고 어떤 변수가 선언 된 장소에 대해
? 몇 번 읽으면, 실제로 사용되기 전에 모든 변수가 메소드의에 선언되어야합니다. 이 올바른지? 변수를 실제로 선언하기 전에 변수를 선언하는 것은 쓸모가 없기 때문에 (아마도 유효하지 않은 인수가 Exception을 던질 수도 있음) 변수/선언 부분을 인수/조건 유효성 검사 부분 이상으로 이동했습니다. 이게 낫겠 니?감사합니다.
첫 번째 예 :
if ( colorStops.constructor === Array
&& colorStops.length
&& colorStops.every(function(c) {
return c instanceof ColorStop
}))
{
var privateVar1 = "foo",
privateVar2 = "bar",
privateVar3 = "tutifrutti";
// here goes the code
}
else {
throw new TypeError("GradientCanvasFacade: cannot add Colors; " +
"invalid arguments received");
}
번째 예 :
의 시작 부분에서 변수를 선언 스크립트 변수 선언 함수가 아닌 대부분의 다른 언어들과 같은 블록 범위 때문에if (cg instanceof ColorGradient) {
throw new TypeError("PresetManager: Cannot add preset; " +
"invalid arguments received");
}
var privateVar1 = "foo",
privateVar2 = "bar",
privateVar3 = "tutifrutti";
// here goes the code
// Here goes the code that get executed when no explicit
// return took place ==> all preconditions fulfilled
어느 쪽이든 보인다는 '생성자'를 사용하지 마십시오. 그것은 모든 브라우저에있는 것은 아니며, 그것이 어쩌면 전혀 들리지도 않습니다. 네이티브 JS 객체의 경우 instanceof를 고수하십시오. – bobince