세미클론(;)
세미콜론(;)!! 별거아닌 듯 별거인 별거,,,
Array.prototype.map123 = function () {
console.log('heeloo')
}
[(1, 2, 3)].map123()
// 저번시간에 같은 팀원분이 위에 코드가 계속 에러가 뜬다고 하셨다.
// 예전 강의에서 문 마다 세미콜론(;)을 찍어줘야 한다는 내용을 들었던게 기억이나서 세미콜론을 찍어보라고 말씀 드렸다.
팀원분의 에러는 해결되었지만 나는 너무 찜찜했다...
// 그냥 '세미콜론 찍어보세요..' 라고 밖에 말하지 못하는 내 자신 ㅠㅠㅠ
왜????! 세미콜론을 state가 끝날때 마다 찍어야 하는지 머리속에 박아넣어보기로 했다!!!!
세미콜론을 꼭 써야하나 말아야하나 개발자 사이에서도 의견이 분분했다.
-> ASI가 대부분의 상황에서 정확하게 동작하여 세미콜론을 붙여준다지만 예외의 경우도 있다! 그냥 모든 상황에 세미콜론 붙여 세미콜론으로 인한 오류는 애초에 방지해 버리자!
-> 줄만 바꿔서 쓰면 오류날 일 거의 없다.
-> 개발자가 세미콜론을 써주지 않아도 ASI가 세미콜론이 들어갈 자리를 파악해서 자동으로 넣어준 다음 코드를 실행하기 때문이다.
ASI는 자바스크립트 프로그램의 세미콜론(;)이 누락된 곳에 엔진이 자동으로 ;을 삽입하는 것을 말한다.
ASI는 새 줄(행바꿈Line Break)에만 적용된다. 자바스크립트 파서parser는 줄 단위로 파싱을 하다가 (;가 빠져) 에러가 나면, ;을 넣어보고 타당한 것 같으면 ;을 삽입한다.)
console.log('hello') console.log('hi');
const x = 1
const y = x
(function(){
console.log('IIFE');
})()
//-> 이경우 세미콜론을 안써도 된다냥!!!파들은
const x = 1
const y = x
;(function(){
console.log('IIFE');
})()
// ->이렇게 IIFE함수 앞에만 세미콜론을 찍어줄 것이다 (x뒤에만 찍어주는 것도 에러가 나지는 않지만 너무 일관성이 없으므로,,,,)
const x = 1
const y = x
[0, 1, 2].forEach(num => {
console.log(num);
})
// -> 이경우 세미콜론을 안써도 된다냥!!!파들은
const x = 1
const y = x
;[0, 1, 2].forEach(num => {
console.log(num);
})
// -> 역시나 [ ] 앞에만 세미콜론을 적어 줄 것이다.
// 코린이인 나는 두 파들 중에서 일단 세미클론을 다 써붙이자!!!!파의 길을 택하였다.
// 이유는 아직 코딩세계에 첫발을 내딛은 만큼 일단은 FM대로 가는게 좋겠다는 생각 때문이다 ㅋㅋ
// 그래도 몇년 후 내가 진정한 개발자가 되었을때(아주 희망 소망 바람) 내가 추구하는 세미콜론의 길은 회사 구성원들이 일관성 있게 선택한 스타일에 따라 내가 맞춰갈 수 있는 왔다리갔다리 파가 가능해지는 갈대밭 세미클론의 길일 것이다!!!