JavaScript, TypeScript, Java 에서의 void 비교

void 연산자는 뒤에 나타나는 표현식을 실행하고 값으로 무조건 undefined 리턴한다.


피연산자로 무엇을 지정하든간에 연산의 결과는 undefined 값이된다.


몇가지 예시를 보면

// 피연산자가 숫자
console.log(void 0); // undefined
// 피연산자가 문자열
console.log(void "문자열"); // undefined

var x = 0;
void x++; // 피연산자를 먼저 평가하기 때문에 x 는 증가한다.
console.log(x); // 1 을 리턴한다.

console.log(void(x)); // 피연산자를 괄호로 감싼 것은 잘 실행되어 undefined 가 출력


이와 같이 동작한다.



언제 어떻게 사용되는지 궁금해서 찾아봤더니 a 태그에서 href 기능을 무효화할 때 사용한다고 한다.

<a href="javascript:void(0)">링크</a>

이렇게 사용하면 해당 링크를 클릭하여도 어떠한 동작도 하지 않는다.



이외에도 다른 사용법이 많지만 잘사용하지 않는것 같다.




추가적으로 독학으로 공부를 하다가 국비 학원을 다니면서 java를 공부하게 되었는데 

java에서 void는 코드는 실행하지만 리턴값이 없는 경우에 사용 되었다.


이외에도 타입스크립트를 공부하면서도 void를 배우게 되었는데 특정 함수가 실행되었는데

return 값이 없는경우 타입으로 void를 설정해주었다.


타입스크립트 예제를 보면

index.ts
const name = 'lee',
age = 20,
gender = 'male'

const sayHi = (name: String, age: Number, gender: String): void => {
console.log(`안녕하세요. 제 이름은 ${name} 입니다. 나이는 ${age} 이고요. 성별은 ${gender} 입니다.`)
}

sayHi(name, age, gender);

export { }



안녕하세요. 제 이름은 lee 입니다. 나이는 24 이고요. 성별은 male 입니다. 

라고 정상적으로 출력된다.


반면에 


index.ts
const name = 'lee',
age = 20,
gender = 'male'

const sayHi = (name: String, age: Number, gender: String): void => {
return (`안녕하세요. 제 이름은 ${name} 입니다. 나이는 ${age} 이고요. 성별은 ${gender} 입니다.`)
}

sayHi(name, age, gender);

export { }


함수의 return 타입을 void 타입으로 설정해주고나서 

console.log 대신에 return 을 사용하면 



이처럼 오류가 발생한다. 

왜냐하면 타입으로 void를 설정했지만 return 값이 있기 때문이다.


void 대신에 String을 작성하면 아래와 같이 오류가 사라진다. return 값으로 String 문자열이 오기 때문이다.












댓글