typescript에서는 리턴 타입을 명시해줘야한다.
function greet(): string {
// return type명시
return 'hello world';
}
function caller() {
var msg = greet(); // greet()의 return msg에 대입
console.log(msg);
}
caller();
- Call by Value
인수의 실제 값을 함수의 형식 매개변수로 복사
이 경우 함수 내의 매개변수에 대한 변경사항은 인수에 영향을 미치지 않음// call by value function test_param(n1: number, s1: string) { n1 = n1 + 100; // 복사된 변수 값 변경 console.log(n1); console.log(s1); } let num = 100; test_param(num, 'this is a string'); console.log(num); // 100 // test_param(123); // 인자 리스트가 맞지 않으면, 함수를 호출 할 수 없다.
- Call by pointer
인수의 주소를 형식 매개 변수에 복사한다.
함수 내에서 주소는 호출에 사용 된 실제 인수에 액세스 하는데 사용된다.
즉, 매개변수 변경사항은 인수에 영향을 미친다.class Person { username: string; constructor(n: any) { this.username = n; } setUsername(n: any) { this.username = n; } getUsername() { return this.username; } } const person = new Person('유관순'); function test_param2(p: Person) { p.setUsername('이순신'); // 객체 변경 } test_param2(person); console.log(person.getUsername); // 이순신
// call by pointer 배열 예제 const str: string[] = ['홍길동', '이순신', '유관순']; function changeName(s: string[]) { // string의 배열 type을 매개변수로 s[0] = '강감찬'; } console.log('변경전', str); // ['홍길동', '이순신', '유관순'] changeName(str); console.log('변경후', str); // ['강감찬', '이순신', '유관순'] export {};