:자바스크립트는 원래 정의 되어있던 식별자(예: alert)도 overriding할 수 있다. 무엇이든 데이터 타입 변경이 가능하니 typeof를 꼭 출력해보자!
<테스트 예제>
//사용된 변수는 window에 등록되고, 값은 가변적으로 사용이 가능하다.
var hello = 1234;
hello = "안녕하세요";
console.log(typeof hello);
hello= 1234;
console.log(typeof hello);
hello= 1234;
console.log(typeof hello);
hello = new Date(); //생성자 처럼 사용
console.log(typeof hello);
hello = Date(); //메소드처럼 사용하면 결과(return type)을 전달해준다.
console.log(typeof hello);
hello = {name:"채수빈", age:10}; //클래스가 없기 때문에 name, age의 멤버 데이터로 객체를 정의
console.log(typeof hello);
hello = function(){
console.log("hello를 값을 지정하는 식별자에서 동작을 정의하는 식별자로 변경");
//return 필수가 아님
}
console.log(typeof hello);
//식별자도 type을 변경할 수 있으니 확인하면서 코딩해야한다.!!
alert = function(){ //원래 정의 되어있던 식별자(예: alert)도 overriding할 수 있음
console.log("구현부 바꾸는거 - overriding");
}
window.alert("message");
<테스트 결과>
**주의!!
: 식별자도 type을 변경할 수 있으니 확인하면서 코딩해야한다.!!
: 자바스크립트는 매개인자 선언과 상관없이 입력값을 넣을 수 있다.
<테스트 예제>
function user(){
console.log("user()");
}
//overloading - 매개인자 선언과 상관없이 입력값을 넣을 수 있다.
myUser = function(name, age){
console.log("myUser()",arguments.length); //자바스크립트의 배열은 가변적으로 사용이 가능하다.(java와 큰 차이점)
console.log(name,age);
for (var t in arguments){
console.log(arguments[t],t, typeof arguments[t]); //t는 인덱스 값(키 값)
}
}
user();
myUser();
myUser("홍길동",10);
myUser(10,20,30,40);
<테스트 결과>