아무것도 모르는 내가 코딩이 적성에 맞는다고 생각해 복수전공을 시작하고 프로그래밍 동아리에 들게 되었다!
하지만 이 글은 '내가 프로그래밍을 시작한 계기' 에 관해 쓰는 글이 아니다. 동아리에 들고 보니 과제를 내 줘서 복습하기 위해 쓰는 글이다.
코로나 바이러스로 모임을 연기하는 동안 다행히 이미 공부해뒀던 HTML과 CSS 기본을 학습하고, 드디어 자바스크립트를 공부하는데 현업에 있던 분께 배워서인지 미리 알려줬던 예습보다 실제 강의에서 훨씬 듣도보도못한 기술들을 많이 알게 되었다.
우선, 변수의 선언에서 예전엔 var라는 것이 있었는데 문제가 많아 지금은 let을 이용하고, 어째서인지 현업에서는 const만으로 대부분을 처리한다고 한다. 어떻게 그게 가능한지 아직 모르겠다.
let a = 3;
const b = 4;
문법은 이렇다.
var는 block 밖에서도 변수가 호출이 되는데 let은 block 안에서만 된다.
var는 같은 이름으로 변수를 다시 선언해도 오류가 나지 않고 문제없이 다시 선언된다. 그래서 이미 사용한 변수를 덮어쓰는 문제가 생길 수 있다.
let과 const의 차이는 let은 값이 바뀔 수 있는데 const는 값이 바뀌지 않는다고 한다. 한번 선언되면 다시는 못 바꾼다.
이것을 immutable 하다고 한다.
아무튼 var는 잊어버리면 된다.
const만으로 프로그래밍을 할 수 있단 것이 내 짧은 지식으로는 함수형 프로그래밍과 연관되어 있는 것으로 보인다.
대입연산자 =
산술연산자는 모두가 다 아는 + - /
문자열도 +로 두개를 붙일 수 있고 (숫자) 로 여러번 붙일 수 있다.
하지만 문자열 사이에 변수를 끼워넣는 것 등은 다른방법으로 더 많이 처리하는데, ES6에서 새로 나온 방법으로
console.log(`안녕하세요 ${aaa} 입니다.`);
라는 식으로 문자열을 따옴표 대신 백틱으로 둘러싸고 ${} 사이에 변수명을 넣으면 일일이 문자열을 +로 잘라서 합치는것보다 더 간단히 포맷팅을 할 수가 있다.
논리연산자 &&(and) ||(or) !(not)
AND는 둘 다 true 여야만 true 값을 반환한다.
OR은 둘 중 하나만 true면 true 값을 반환한다.
단축평가라고 해서, 앞의 것만 보고 판단이 가능한경우 뒤의 것을 보지 않고 판단이 끝난다.
자바스크립트는 값이 있으면 대충 true로 보고 0이거나 값이 없으면 대충 false로 본다.
("aa"&&"bb")
를 계산하라고 시키면 오류가 나는 게 아니라 둘 다 true로 봐서 "bb"를 반환한다. 그리고 이걸 현업에서 사용한다!
isloaded&&"<loading/>"
이렇게 하면 앞부분이 true일 때 loading/ 컴포넌트를 출력할 수 있다고 한다.
이 부분을 잘 기억해두고 사용할 줄 알아야 한다고 한다.
하여튼 true와 비슷한 것으로 치는 값, false와 비슷한 것으로 치는 값이 존재하고 값 자체가 불리언이 아니라면 논리적 결과가 아니라 그 값이 반환된다.
논리 연산자의 연산 순서에 관해서는, 내게 c를 가르쳐 주신 교수님이 이런 말을 한 적이 있다.
그냥 원하는 순서대로 전부 괄호를 치면 된다.
비교 연산자는 ===를 사용한다. 같지 않음은 !==이다.
== 같은건 이 세상에 존재하지 않는다. 되는것같지만 그건 착각이다.
사실은 ==를 사용했을 경우 타입까지 완전히 비교하지 않기때문에 쓰면 안되는것이다.
10 == "10"
true
10 === "10"
false
삼항연산자를 배운적이 있는데 잊어버렸는지, C를 배우며 배운 적도 없는지는 잘 기억이 나지 않는다.
(조건)?(결과1):(결과2)
의 형식으로 사용하는데, 조건이 true이면 앞의 결과가 실행되고 false이면 뒤의 결과가 실행된다. if else 문으로도 사용할 수 있지만 훨씬 간결하게 표현이 가능하다는 것이 장점이다.