오늘은 언어 기초 첫 날! 그래도 변수까지는 책에서 여러번 봐서(ㅎ) 빠르게 진도를 나가고 있었는데.. 코딩테스트에서 막혔다. 와.. 코딩테스트..! 맨날 공부해야지 하면서 절대 안했던 코딩테스트..! 첫 코테를 해봤는데 정말정말 어려웠다. 나는 바보인가?를 백번정도 중얼거린 것 같다!! 공부자료에서 답을 다 주셨는데도 못풀겠어서 정말 힘들었다..^^...ㅎ 그러다 결국 노트에 몇번 그려보고 풀긴 풀었다. 아직 갈 길이 먼 것 같다..!! 그리고 팀원들과 스터디를 하는데.. 다들 왜 이렇게 잘하시나요..? 나는 자바스크립트란 무엇인가?에 대한 질문에 4줄적고 헉헉거리고 있는데, 다들 아주 잘 정리해주셔서 뭔가 대학원에 놀러온 유치원생 같았다..
그래도 항해하면서 항상 팀원들을 잘 만나는 것 같아 행복하다. 물론 팀원들은 그렇게 생각 안할지도 모르지만..^^... 나는 항상 팀원들한테 배울게 너무 많았기때문에..! 나는 행복하다..! 오티부터 어제까지 한번도 늦게까지 공부 할 생각을 해본적이 없었는데, 정말 오늘 처음으로 아.. 나 공부가 정말 많이 필요하구나.. 를 느꼈다. 열심히 하겠습니다!!
자바는 선언시 int, float, String등의 자료형으로 타입을
먼저 지정해주지만, 자바스크립트는 let, const등을 사용해
미리 타입을 정하지 않고 동적으로 타입을 변경할 수 있다.
-객체(프로토타입) 기반 프로그래밍 언어이다. javaScript에만 있는 코드 재활용 방법이다. new 연산자를 통해 생성한 객체를 사용하려 코드를 재사용 할수도 있고,
부모함수.prototype.생성할함수 = function(){} 으로 만들어 사용 할 수도 있다.
-함수를 변수처럼 다루는 일급함수를 지원한다. 변수에 할당 할 수 있고, 다른 함수를 인자로 받을 수 있고, 다른 함수의 결과로 return할 수 있다.
-객체 지향 프로그래밍(OOP), 함수형 프로그래밍(FP) 등 다중 패러다임을 지원한다.프로그래밍 패러다임은 구조적/비구조적 프로그래밍, 절차지향/객체지향 프로그래밍 등 많은 패러다임이 있다.
자바스크립트는 하나의 패러다임을 지원하는게 아니라 객체지향, 함수형 프로그래밍 등 다중 패러다임을 지원한다.
-단일 스레드 기반으로 동작하며, 웹 브라우저에서는 Event Loop를 통해 비동기 처리가 가능하다.스택이 하나, 거기서 하나씩 실행(한번에 하나의 작업)
자바스크립트는 동기적 언어이다 : 한번에 하나 처리
비동기적 처리도 가능: setTimeout, 이벤트리스너, ajax함수 등
변수 명명 규칙 : 변수명에는 오직 문자와 숫자, 그리고 기호 $
, _
만 들어갈 수 있다.
예약어
(let
,return
등)는 변수 명으로 사용할 수 없다.상수 : 변화하지 않는 변수를 선언할 땐 let
대신 const
를 사용한다.
- 그럼 const
는 언제 사용하게 될까? 값이 변경되지 않을 것이라고 확신을 언제 할 수 있지..?
BigInt : 정수 리터럴 끝에 n
을 붙이면 만들 수 있다.
null
값과 undefined
값
- null 값은 오로지 null 값만 포함하는 별도의 자료형을 만든다.
형변환
- null과 undefined는 숫자형으로 변환 시 결과가 다르다는 점에 유의하자. null은 0이되고, undefined는 NaN이 된다.
- boolean형으로 변환시 숫자 0, 빈문자열, null, undefined, NaN과 같이 직관적으로 '비어있다'고 느껴지는 값들은 false가 된다. 그 외의 값은 true가 된다.
- 문자열 "0"과 " "같은 공백은 불린형으로 변환 시 true!!
이항 연산자 '+'와 문자열 연결
- '+'를 사용할 때는 피연산자 중 하나가 문자열이면 다른 하나도 문자열로 변환된다.
뺄셈과 나눗셈 연산자에서는 숫자로 바꾼 후 연산이 진행된다.
console.log(6 -'2'); // 4
console.log('6' /'2'); //3
숫자가 아닌 경우 단항 덧셈 연산자를 붙이면 숫자형으로 변환이 일어난다.
console.log( +true ); // 1
console.log( +"" ); //0
연산자 우선순위
- 단항 덧셈 연산자가 이항 덧셈 연산자의 우선순위보다 높다.
let a = "2";
let b = "3";
console.log(a+b) // "23"
console.log( +a + +b) // 5
문자열 비교
- 사전순으로 문자열을 비교한다. (정확히는 사전 순이 아니라 유니코드 순!)
다른 형을 가진 값 간의 비교
console.log('2' > 1 ); // true, 문자열 '2'가 숫자 2로 변환된 후 비교가 진행
console.log( true == 1 ); // true! (false == 0)
일치연산자
- 동등연산자(==)는 0과 false를 구별하지 못하지만, 일치연산자(===)는 형 변환 없이 값을 비교하기 때문에 구별한다!
console.log( 0 == false ); // true
console.log( 0 === false ); // false, 피연산자의 형이 다르다!
null이나 undefined와 비교하기
console.log( null === undefined ); // false
console.log( null == undefined ); // true
삼항 연산자
let isAdult = (condition) ? value1 : value2;
물음표 연산자 ?
를 여러개 연결하면 복수의 조건을 처리할 수 있다.
let age = prompt('나이를 입력해주세요.');
let message = (age < 3) ? '응애~' :
(age < 18) ? '안녕!' :
(age < 100) ? '환영합니다!' :
'나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
alert( message );
조건문과 반복문은 웹개발 종합반 시간에 따로 노트작성 및 공부를 했으니 노트 작성은 생략!
정현
님이 추천해주신 코딩애플 강의(자바스크립트 동작 원리): https://www.youtube.com/watch?v=v67LloZ1ieIundefined
와 null
: https://99geo.tistory.com/69이 위의 웹사이트 모두 정현
님이 추천해주셨다... 감사합니다!!