[TIL] 23.05.30

hyein·2023년 5월 30일
0

TIL

목록 보기
2/34

세미클론(;)

세미콜론(;)!! 별거아닌 듯 별거인 별거,,,

Array.prototype.map123 = function () {
  console.log('heeloo')
}
[(1, 2, 3)].map123()

// 저번시간에 같은 팀원분이 위에 코드가 계속 에러가 뜬다고 하셨다.
// 예전 강의에서 문 마다 세미콜론(;)을 찍어줘야 한다는 내용을 들었던게 기억이나서 세미콜론을 찍어보라고 말씀 드렸다.
팀원분의 에러는 해결되었지만 나는 너무 찜찜했다...
// 그냥 '세미콜론 찍어보세요..' 라고 밖에 말하지 못하는 내 자신 ㅠㅠㅠ
왜????! 세미콜론을 state가 끝날때 마다 찍어야 하는지 머리속에 박아넣어보기로 했다!!!!


세미콜론을 꼭 써야하나 말아야하나 개발자 사이에서도 의견이 분분했다.


feat.세미콜론을 꼭 써줘라!!

-> ASI가 대부분의 상황에서 정확하게 동작하여 세미콜론을 붙여준다지만 예외의 경우도 있다! 그냥 모든 상황에 세미콜론 붙여 세미콜론으로 인한 오류는 애초에 방지해 버리자!


feat.세미콜론은 필수 아니다!! 예외만 알고 꼭 필요한 자리에만 써 넣어주자!!

-> 줄만 바꿔서 쓰면 오류날 일 거의 없다.
-> 개발자가 세미콜론을 써주지 않아도 ASI가 세미콜론이 들어갈 자리를 파악해서 자동으로 넣어준 다음 코드를 실행하기 때문이다.

ASI는 자바스크립트 프로그램의 세미콜론(;)이 누락된 곳에 엔진이 자동으로 ;을 삽입하는 것을 말한다.
ASI는 새 줄(행바꿈Line Break)에만 적용된다. 자바스크립트 파서parser는 줄 단위로 파싱을 하다가 (;가 빠져) 에러가 나면, ;을 넣어보고 타당한 것 같으면 ;을 삽입한다.)


  • 예외 -1
    statement 두개가 한줄에 붙어있는 경우 => Unexpected identifier
console.log('hello') console.log('hi');

  • 예외 -2
    IIFE 즉시함수호출
    // x()로 인식해버린다.... => TypeError: x is not a function
const x = 1
const y = x

(function(){
  console.log('IIFE');
})()

//-> 이경우 세미콜론을 안써도 된다냥!!!파들은

const x = 1
const y = x

;(function(){
  console.log('IIFE');
})()

// ->이렇게 IIFE함수 앞에만 세미콜론을 찍어줄 것이다 (x뒤에만 찍어주는 것도 에러가 나지는 않지만 너무 일관성이 없으므로,,,,)


  • 예외 -3
    x[]... (예외 -2와 비슷)

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);
})

// -> 역시나 [ ] 앞에만 세미콜론을 적어 줄 것이다.


comment

// 코린이인 나는 두 파들 중에서 일단 세미클론을 다 써붙이자!!!!파의 길을 택하였다.
// 이유는 아직 코딩세계에 첫발을 내딛은 만큼 일단은 FM대로 가는게 좋겠다는 생각 때문이다 ㅋㅋ
// 그래도 몇년 후 내가 진정한 개발자가 되었을때(아주 희망 소망 바람) 내가 추구하는 세미콜론의 길은 회사 구성원들이 일관성 있게 선택한 스타일에 따라 내가 맞춰갈 수 있는 왔다리갔다리 파가 가능해지는 갈대밭 세미클론의 길일 것이다!!!

profile
As I start to move towards the goal, the goal will start to move towards me.

0개의 댓글