앵귤러마스터북 책을 보면서 공부를 하고 있는데 아래와 같은 예제가 나왔다.
<button (click)="addArticle(newtitle, newlink)" class = "~"> Submit link</buttion>
js로는 <button click="addArticle(newtitle, newlink)">Submit link</buttion>
요종도가 될 것 같은데,
버튼이 클릭되면 addArticle이라는 함수로 넘어가게 코드를 짜줫다.
그리고 addArticle함수를 보면
addArticle(title: HTMLInputElement, link: HTMLInputElement):boolean{
console.log(`Adding article title : ${title.value}, link : ${link.value}`);
return false;
};
밑에 리턴값을 false로 줬는데 이부분이 잘 이해가 되지 않아서 찾아봤다.
결론은 return을 쓴다면 무엇을 return할 것인지 명확한 의미를 전달해 주는 게 좋다고 한다~
근데 여기서 또 궁금한 점이 생겼다.. return false와 void의 차이도 궁금해졌다.
void연산자는 리턴값으로 undefined를 반환한다.
<a href ="javascript:undfined"></a>
음 그리고 추가를 하자면
이런식으로 html과 js를 분리하지 않는 방식은 되도록 지양하는 편이 좋다고 한다.
제일 좋은 방법은 js태그 안에서 이벤트핸들러를 통해 제어하는 것이라고 함
근데... 내 얄팍한 지식은 바닥이 끝이 없다.. 또또 궁금한게 생겨따... a태그를 쓰면 href로 링크로 넘어가게 해줄 수 있잖슴? 근데
href="#"이런거와의 차이점은 또 뭘까..?
a href는 비워두면 오류가날 가능성이 높다고 한다. 그래서 여러 방밥이 있는데
1. <a href="#"></a>
2. <a href="#none"></a>
3. <a href="#javascript:;"></a>
4. <a href="javascript:void(0);"></a>
<a href="#"></a>
#만 쓰면 스크롤이 어디있든 최상단으로 이동함.
<a href="#none"></a>
#뒤에 아이디로 쓰지 않는 text를 넣음.
그러면 어디로도 이동하지 않고 스크롤의 이동도 없음.
<a href="#javascript:;"></a>
js라고 작성하긴 했지만 아무 일도 발생하지 않음
스크롤 이동도, undefined발생도 없음.
<a href="javascript:void(0);"></a>
void안에 0말고 영문, 숫자도 가능함.
이것도 a태그의 이동을 무력화 시킴
그러나 void는 undefined를 리턴한다고 위에서 말했잖슴?!?!!
javascript:는 브라우저에게 뒤에 작성된 함수를 실행시키는 의미를 담고 있음
즉, 브라우저에게 void(0)연산자를 실행하라고 말하는 의미임.
a태그의 기본 기능은 작동되지 않지만 undefined를 리턴하므로 좋은 방법은 아님 XXX!!!
머 stackoverflow를 보면 return false를 쓰는게 가장 좋은 방법이라고 말하고 있긴 함.
결론) return 값을 명확히 쓰자~
return vs return flase
return; 시 null 반환.
return의 값을 정확하게 전달해주는게 좋음
return false vs void
js에서 voide를 바로 실행(반환값 없음 : undefined)
링크 시 onclikc이벤트의 false반환으로 진행 중지
https://okky.kr/articles/682955
https://diaryofgreen.tistory.com/80
https://stackoverflow.com/questions/3498492/javascriptvoid0-vs-return-false-vs-preventdefault
https://minimal-dev.tistory.com/28