항해99 12기 - 230118 TIL

지윤·2023년 1월 18일
0

항해99

목록 보기
8/40
post-thumbnail

오늘 한 일

오늘은 언어 기초 첫 날! 그래도 변수까지는 책에서 여러번 봐서(ㅎ) 빠르게 진도를 나가고 있었는데.. 코딩테스트에서 막혔다. 와.. 코딩테스트..! 맨날 공부해야지 하면서 절대 안했던 코딩테스트..! 첫 코테를 해봤는데 정말정말 어려웠다. 나는 바보인가?를 백번정도 중얼거린 것 같다!! 공부자료에서 답을 다 주셨는데도 못풀겠어서 정말 힘들었다..^^...ㅎ 그러다 결국 노트에 몇번 그려보고 풀긴 풀었다. 아직 갈 길이 먼 것 같다..!! 그리고 팀원들과 스터디를 하는데.. 다들 왜 이렇게 잘하시나요..? 나는 자바스크립트란 무엇인가?에 대한 질문에 4줄적고 헉헉거리고 있는데, 다들 아주 잘 정리해주셔서 뭔가 대학원에 놀러온 유치원생 같았다..
그래도 항해하면서 항상 팀원들을 잘 만나는 것 같아 행복하다. 물론 팀원들은 그렇게 생각 안할지도 모르지만..^^... 나는 항상 팀원들한테 배울게 너무 많았기때문에..! 나는 행복하다..! 오티부터 어제까지 한번도 늦게까지 공부 할 생각을 해본적이 없었는데, 정말 오늘 처음으로 아.. 나 공부가 정말 많이 필요하구나.. 를 느꼈다. 열심히 하겠습니다!!

스터디

  • 자바스크립트란?
    - 내가 알았던 것은 아래 4개가 전부였다.
    • 웹페이지를 동적으로 만들기 위한 언어
    • 10일 만에 설계된 언어?
    • ECMAScript 사양을 준수하는 범용 스크립팅 언어이다..?
    • 인터프리터 언어 이다. (소스를 한줄 한줄 읽어가며 명령을 바로 처리, 번역과 실행이 동시에 이루어짐)
  • 오늘 배운 것을 추가 해 보면
    - 동적으로 타입을 변경할 수 있는 동적타입언어이다.
    	자바는 선언시 int, float, String등의 자료형으로  타입을 
      먼저 지정해주지만, 자바스크립트는 let, const등을 사용해 
      미리 타입을 정하지 않고 동적으로 타입을 변경할 수 있다.
    -객체(프로토타입) 기반 프로그래밍 언어이다.
    	javaScript에만 있는 코드 재활용 방법이다. new 연산자를 통해 생성한 객체를 사용하려 코드를 재사용 할수도 있고, 
      부모함수.prototype.생성할함수 = function(){} 으로 만들어 사용 할 수도 있다.
    -함수를 변수처럼 다루는 일급함수를 지원한다.
    	 변수에 할당 할 수 있고, 다른 함수를 인자로 받을 수 있고, 다른 함수의 결과로 return할 수 있다.
    -객체 지향 프로그래밍(OOP), 함수형 프로그래밍(FP) 등 다중 패러다임을 지원한다.
    프로그래밍 패러다임은 구조적/비구조적 프로그래밍, 절차지향/객체지향 프로그래밍 등 많은 패러다임이 있다. 
    자바스크립트는 하나의 패러다임을 지원하는게 아니라 객체지향, 함수형 프로그래밍 등 다중 패러다임을 지원한다.
    -단일 스레드 기반으로 동작하며, 웹 브라우저에서는 Event Loop를 통해 비동기 처리가 가능하다.
    스택이 하나, 거기서 하나씩 실행(한번에 하나의 작업)
    자바스크립트는 동기적 언어이다 : 한번에 하나 처리
    비동기적 처리도 가능: setTimeout, 이벤트리스너, ajax함수 등
    

오늘 배운 것 (노트)

  • 변수 명명 규칙 : 변수명에는 오직 문자와 숫자, 그리고 기호 $, _만 들어갈 수 있다.

    • 첫 글자는 숫자가 될 수 없다.
    • 대/소문자 구별함! (apple과 Apple은 다른 변수이다.)
    • 예약어 (let,return 등)는 변수 명으로 사용할 수 없다.
  • 상수 : 변화하지 않는 변수를 선언할 땐 let대신 const를 사용한다.
    - 그럼 const는 언제 사용하게 될까? 값이 변경되지 않을 것이라고 확신을 언제 할 수 있지..?

    • 받은 답변: 코드가 많아 짐에 따라, 가변성이 있는 변수는 에러 확률이 높습니다. 고로 const를 주로 사용합니다 !
  • BigInt : 정수 리터럴 끝에 n을 붙이면 만들 수 있다.

  • null값과 undefined
    - null 값은 오로지 null 값만 포함하는 별도의 자료형을 만든다.

    • 다른 언어의 null과 성격이 다르다. 자바스크립트에선 null을 존재하지 않는 값, 비어있는 값, 알 수 없는 값을 나타내는 데 사용한다.
    • undefined 값도 null값 처럼 자신만의 자료형을 형성.
    • undefined는 '값이 할당되지 않은 상태'를 나타낼 때 사용한다.
    • 변수에 undefined를 명시적으로 할당하는 것도 가능하지만 권장하지 않는다!!
    • 내가 이해한 것: undefined는 값을 할당해주지 않았을때 나오고, null은 값에 알수 없음 이라고 null로 할당 한 것..?
      - 받은 답변 : undefined는 변수를 선언하고 값을 할당하지 않은 상태, null은 빈 값을 할당한 상태입니다.
      즉 undefined는 타입도 undefined이고, null은 타입이 object 입니다.
  • 형변환
    - 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
    • 단항 덧셈 연산자로 Number(...)의 역할을 해주는 것!
  • 연산자 우선순위
    - 단항 덧셈 연산자가 이항 덧셈 연산자의 우선순위보다 높다.

    
    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
    • null은 0, undefined는 NaN으로 변환된다.
  • 삼항 연산자

    let isAdult = (condition) ? value1 : value2;
  • 물음표 연산자 ?를 여러개 연결하면 복수의 조건을 처리할 수 있다.

    let age = prompt('나이를 입력해주세요.');
    
    let message = (age < 3) ? '응애~' :
      (age < 18) ? '안녕!' :
      (age < 100) ? '환영합니다!' :
      '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
    
    alert( message );
  • 조건문과 반복문은 웹개발 종합반 시간에 따로 노트작성 및 공부를 했으니 노트 작성은 생략!

참고 웹사이트

이 위의 웹사이트 모두 정현님이 추천해주셨다... 감사합니다!!

profile
방금 태어난 개발자

0개의 댓글