2013-09-10 2 views
0

함수 호출에 올바른 인수 유형이 있는지 확인하는 방법이 있습니까? changeCar라는 함수를 가지고 있는데,이 함수는 Car라는 유형과 String 유형의 두 개의 인수를 취합니다.함수 호출에 올바른 인수 유형이 있는지 확인하십시오.

function Car(){ 
this.make="generic"; 
} 

function changeCar(car,mytype){ 
car.make=mytype; 
} 

var mycar=new Car(); 
changeCar(mycar,"ferrari"); 

mycar와 "ferrari"가 changeCar를 실행하는 데 필요한 올바른 유형인지 여부는 알기 쉽습니까? 가능한 경우 스크립트를 실행하기 전에이 작업을 수행해야합니다. 예를 들어 eval 또는 try/catch를 사용하여 실수를 찾으십시오.

학생들은 자바 스크립트 스크립트를 입력하고 함수 인수 및 함수 호출에서 오류를 찾을 수 있습니다.

답변

0
function changeCar (car, mytype) { 
    if (car instanceof Car && mytype.toLowerCase) { 
     car.make = mytype; 
    } 
} 

Duck typing FTW.

+0

'String (mytype) === mytype'과 같은 검사를 수행하는 것보다 _toLowerCase_를 확인하는 이점이 있습니까? ('new'가 없다는 것에주의하십시오.) –

+0

@PaulS. - [길 * 더 빨라서] (http://jsperf.com/duck-typing-vs-tostring). –

+2

코드에 오류가 있는지 확인하고 함수 params가 올바른지 확인하지 않습니다. 그는 '컴파일'하고 '컴파일 타임 오류'를 원합니다. 그러므로 이것은 답이 아닙니다. – DDS

관련 문제