ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제로초 javascript
    카테고리 없음 2022. 3. 7. 09:26

     <22.3.7>

    1-1. 자바스크립트 입문자들께 드리는 말씀

    ko.javascript.info, mdn 사이트 추천

    1-2. VS Code와 크롬 설치하기

    유료는 webstorm

    사용자 이름 영어로 바꾸기

    자바스크립트를 실행할 때는 브라우저가 필요.(브라우저 없으면 node.js로 실행가능)

    1-3. 첫 자바스크립트 코드 실행하기

    ()소괄호parentheses {}중괄호braces []대괄호brackets

    1-4. 프로그래밍 사고력의 중요성

    순서도

    2-1. 세미콜론, 주석, 들여쓰기

    주석: //, /* */

    들여쓰기 2칸 스페이스

    2-2. 문자열 기본(따옴표, 백틱, typeof, escape)

    값(value)의 자료형(data type)

    1. 문자열

    자바스크립트는 반드시 문자열을 큰따옴표, 작은 따옴표, 백틱(`)도 가능

    백틱은 줄바꿈 가능.

    따옴표는 줄바꿈을 \n으로 가능

    typeof '문자열'     =>string

     

    'how\'re you?'

    2-3. 문자열 합치기(연산자)

    '바나나' + '사과'    =>'바나나사과'

    2-4. 숫자 기본(parseInt, NaN)

    50000 = 5e4

    0.0005 = 5e-4

    이진법7 = ob111

    8진법73 = 0111 = 0o111

    16진법 417 = 0x1a1

     

    typeof 0x1a1

    NaN = Not a Number

    NaN-0 = NaN

     

    '124'+5   =  '1245'  (형 변환)

    '문자열' - 0 = NaN

    '3' - 0 = 3      -,/,*는 숫자로 바뀐다.

     

    parseInt('124')

    Number('124') + 5   = 129

    typeof parseInt('123')

     

    parseInt('3.14')   => 3

    parseFloat('3.14')  => 3.14

    Number('3.14')  => 3.14

     

    parseInt('3월') => 3

    Number('3월') => NaN

     

    typeof parseInt(prompt());   값입력할 수 있는 창 뜸

    parseInt(prompt())

    prompt()   => "53"    문자열을 입력받음

     

    parseInt(111, 2) => 7     (2진법)

     

    +-/*%

     

    6/4  = 1.5

     

    **   제곱

    2**4   = 16

    2/0   = Infinity 무한이라는 수

    typeof -Infinity

    Infinity - Infinity = NaN

    0/0 = NaN

     

    2-5. 연산자 우선순위, 소수 계산 주의점

    ()소괄호 그룹화가 가장 우선순위가 높다.

     

    0.1+0.2  = 0.30000000000000004

    소수계산을 잘 못함. 부동소수점 문제. 2진법을 사용하기 때문

     

    10을 곱해서 정수로 만든후, 마지막에 다시 10으로 나눠서 실수로 바꾸기

    (0.3*10-0.1*10)/10 = 0.2

     

    <2-6. 불 값(boolean, 값들의 비교)>

    true, false

    5 == 5  같다

    5 != 5 같지않다

    NaN == NaN  => false   !=만 true가 나온다.

    true > false => true

     

    'b'>'a'    => true  사전순서

    '&'.charCodeAt()

     

    '3'<5 =>true

     

    'abc' < 5  => false

    'abc'를 숫자로 바꾸면 NaN

    '0' < true;  => true

    true는 1

     

    == 같다

    '1' == 1 =>true 값만 비교

    1==true=>true

     

    '1' ===1 =>false 값+자료형도 비교

     

    1 !== '1' =>true

     

    <22.3.8>

    <2-7. 논리연산자>

    and &&

    or ||

    !true => false

    !false => true

     

    Boolean('a');

    !!'a'  => true

    '', 0, NaN, undefined, null, document.all  =>false 외우기

     

    <2-8. undefined와 null>

    빈 값. undefined, null,   문자열, 숫자, 불 값 이외의 자료형 object, symbol

     

    돌려줄 값이 없으면 undefined를 돌려준다.

    console.log('Hello, undefined!');

    => undefined

     

    undefined == false;  => false

    undefined == 0;  => false

     

    undefined == null; =>true

    undefined === null;  => false

     

    null == false;  => false

    null == 0;  => false

    null == '';  => false

     

    typeof null  => "object"

     

    <2-9. 변수 선언하기(let)>

    변수를 사용하면 값을 저장할 수 있다.

    let numberOne = 135;

    let total = 5000+8000+10000+9000; =>32000

    변수선언 = 초기화;

    let은 두번 선언할 수 없다.

     

    <2-10. 변수 이름짓기>

    변수선언만 하고 초기화를 안해주면 undefined

     

    변수명 &,_가능, 한글,숫자도 가능(숫자는 가장먼저 쓰이면 안된다)

     

    <2-11. 변수 수정하기>

    변수에 넣은 값을 비울 때

    1. chanege = undefined

    2. change = null;

    null로 바꾸는 것을 추천.

     

    변수를 다른 변수에 대입가능

    let string2 = string;

     

    number = number +3;

    ㄴ=  number += 3;     -=, *=, /=, %=, **= 도 가능

     

    <2-12. 상수(const)와 var>

    변수를 선언하는 예약어로 let, const, var

    const는 상수(constant) 변하지 않는 수. vs 변수: 변하는 수

     

    const는 초기화를 꼭 같이 해줘야 한다.

     

    var는 변수(variable)의 줄임말. 예전에 많이 사용했다. 다시 선언가능.

    var는 예약어를 변수명으로 사용가능.

     

    <2-13. 조건문(if)>

    if (조건식) {

      동작문1;

      동작문2;

    }

    동작문이 하나 이상이면 동작문들을 중괄호로 감싼다. 

     

    콘솔창에서 줄바꿈은 shift+enter

     

    <2-14. else, else if, switch>

    if (조건식) {

      동작문;

    } else if (조건식) {

      동작문;

    } else {

      동작문;

    }

     

    switch (조건식) {

      case 비교조건식;

        동작문;

    }

     

    switch 옆 소괄호 조건식의 값이 case의 비교 조건식값과 일치(===)하면 해당 동작문이 실행된다.

    보통 조건식에 변수를 넣고, 비교 조건식에는 변수와 비교할 값을 넣는다.

     

    let value = 'A';

    switch (value) {

      case 'A':

        console.log('A');

        console.log('B');

    }

     

    let value = 'B';

    switch (value) {

      case 'A':

        console.log('A');

      case 'B':

        console.log('B');

      case 'C':

        console.log('C');

    }

    B, C 모두 출력된다.

     

    let value = 'B';

    switch (value) {

      case 'A':

        console.log('A');

        break;

      case 'B':

        console.log('B');

        break;

      case 'C':

        console.log('C');

        break;

    }

     

    B만 출력됨.

     

     

    let value = 'F';

    switch (value) {

      case 'A':

        console.log('A');

        break;

      case 'B':

        console.log('B');

        break;

      case 'C':

        console.log('C');

        break;

      default:

        console.log('아무것도 일치하지 않음');

    }

     

    '아무것도 일치하지 않음'이 출력됨. default가 else와 비슷한 역할

     

    <2-15. 조건부 연산자(삼항 연산자)>

    조건식? 참일 때 실행되는 식 : 거짓일 때 실행되는 식

    5 > 0 ? '참입니다' : '거짓입니다';

     

    let value = 5 < 0 ? '참입니다' : '거짓입니다';    결과값을 변수에 대입할 수 있음

     

    조건부 연산자도 중첩가능

    let value = condition1 ? (condition2 ? '둘 다 참' : 'condition1만 참') : 'condition1이 거짓';  소괄호 생략가능

     

    <2-16. 반복문(while)>

    while (조건식) {

      동작문1;

      동작문2;

    }

     

    let i = 1;

    while (i <=100) {

      console.log('Hello, while!');

      i++;

    }

     

    <22.3.9>

    <2-17. 반복문(for)>

    for(시작; 조건식; 종료식)

      동작문;

     

    for (let i=0; i < 100; i++) {

      console.log('Hello, for!');

    }

     

    for문의 시작, 조건식, 종료식은 생략가능

    for(;;) {

    }

    ㄴ가능한 코드, 무한 반복

     

    <2-18. break와 continue>

    let i = 0;

    while (true) {

      if (i === 5) break;

      i++;

    }

    console.log(i);

     

    for (let i = 0; ; i++) {

      console.log(i);

    }

    ㄴ조건식이 생략되어 문한반복

     

    let i = 0;

    while (true) {

      console.log(i);

      i++;

    }

     

    let i = 0;

    while (i < 10) {

      i++;

      if (i % 2 === 0) {

        continue;

      }

      console.log(i);

    }

    continue만나면 그 다음줄 실행안하고 그다음 반복문으로 간다.

     

    <2-19. 중첩 반복문>

    for (let i = 0; i <10; i++) {

      for (let j = 0; j <10; j++) {

        console.log(i, j);

      }

    }

     

    i,j,k

     

    <2-20. 별찍기 숙제>

    (1)

    *

    **

    ***

    ****

    *****

     

    (2)

    *****

    ****

    ***

    **

    *

     

    (3)

    *

    ***

    *****

    *******

    *********

     

    (4)

    *********

    *******

    *****

    ***

    *

     

    (5)

    *****

     ****

      ***

       **

        *

     

    (6)

        *

       **

      ***

     ****

    *****

     

    (7)

      *

     ***

    *****

     ***

      *

     

    (8)

        *

       ***

      *****

     *******

    *********

     

    <2-21. 배열 기본>

    객체(object)는 배열(array), 함수(function), 배열이나 함수가 아닌 객체로 나눌 수 있다.

    const fruits = ['사과', '오렌지', '배', '딸기'];

    대괄호([]) 사용. 값은 쉼표로 구분

    사과, 오렌지, 배, 딸기는 배열의 요소(element)

    배열안에 배열, 변수도 들어갈 수 있다.

    const arrayOfArray = [[1,2,3], [4,5]];

     

    배열 요소개수 구하기

    console.log(everything.length);

    null, '', undefined, NaN 등의 빈값도 유효한 값이므로 요소 개수에 포함.

     

    배열에 요소 추가

    const target = ['a', 'b', 'c', 'd', 'e'];

    target[5] = 'f';

     

    배열 제일앞에 요소 추가

    unshift

    target.unshift('가');

     

    배열 제일 뒤에 요소 추가

    push

    target.push('바');

     

    const가 상수더라도 객체의 내부는 변경가능. 새로운 값을 대입(=)은 불가능

    target2 = ['f', 'g']; //불가능

    target2[0] = 'h'; //가능

     

    <2-22. 배열 메서드(수정, 조회)>

    배열의 요소 수정

    target[3] = '카';

     

    배열에서 요소 제거하기

    마지막 요소제거 pop

    target.pop();

     

    첫번째 요소 제거 shift

    target.shift();

     

    중간 요소 제거 splice

    target.splice(지우고 싶은 요소의 인덱스, 그 요소로부터 지울 요소개수);

    target.splice(1, 1);

     

    splice에 숫자 값 하나만 넣어보면, 해당 인덱스부터 끝까지 모든 요소를 제거.

    target.splice(1);

     

    splice로 값을 지우기만 하는 것이 아니라 지워진 자리에 다른 값을 넣을 수도 있다.

    splice의 세번째 자리부터 바꿀 값들을 넣어주면 된다.

    target.spice(1,3,'타','파');

     

    배열에서 요소 찾기

    배열에 특정요소가 있는지 검색기능. includes

    const result = target.includes('다'); true

     

    검색하고 싶은 값이 몇 번째 인덱스에 위치하는 지 알아보기 indexOf, lastIndexOf

    const result = target.indexOf('다'); 앞에서부터 값 찾아봄

    const result2 = target.lastIndexOf('라'); 뒤에서부터 값 찾아봄

    없는 값 찾으면 -1반환

     

     

    배열 조회

    let i = 0;

    while (i < target.length) {

      console.log(target[i]);

      i++;

    }

     

    <2-23. 배열 메서드 응용하기>

    다음 배열에서 '라'를 모두 제거하세요. indexOf와 splice를 사용하세요.

    const arr = ['가', '라', '다', '라', '마', '라'];

     

     

    if (arr.indexOf(1) > -1)

     

    <2-24. 함수 기본>

    함수 function

    함수 만들기

    1. function() {}

    2. ()=> {}

     

    함수에 이름 붙이기

    function a() {} 함수 선언문

    const b = function() {}; 함수 표현식

    const c = () => {};

     

    함수 호출하기

    function a() {}

    a();

     

    함수안에서 다시 함수를 호출할 수도 있다.

     

    함수의 반환값

    function b() {

      return '반환값';  함수의 종료를 의미하기도 한다.

    }

     

    여러 값 리턴

    function a() {

      return [1, 5];

    }

     

    <2-25. 매개변수와 인수>

    parameter(함수선언시), argument(함수호출시)

    function a(parameter) {

      console.log(parameter);

    }

    a('argument');

     

    매개변수 여러개도 가능

    function a(w, x, y, z) {

      console.log(w, x, y, z);

      console.log(arguments);  // function안에서만 사용가능. => 결과값 Arguments(3) ['Hello', 'Parameter', 'Argument']

    }

    a('Hello', 'Paremeter', 'Argument');  z는 undefined

     

    매개변수 x,y,z을 받아 곱한 값을 반환하는 multiply 함수를 만들어 보세요. 단, 화살표 함수로 만드세요.

     

    화살표는 중괄호와 return이 바로 이어지면 중괄호와 return을 생략가능.

    const f = (x, y, z) => x * y * z;

     

    <2-26. 객체 리터럴 기본>

    객체는 여러 개의 변수를 하나의 변수로 묶을 때 사용한다.

     

    const zerocho = {

      name: '홍길동',

      year: 1993,

      month: 11,

      date: 19,

      gender: 'M',

    };

     

    속성이름: 속성 값

     

    속성이름에 특수문자나 띄어쓰기가 들어가거나 숫자가 제일 앞에 있다면 따옴표 붙여줘야 한다.

     

    console.log(zerocho.name);

    console.log(zerocho['name']); 대괄호에 따옴표를 빼먹으면 변수로 인식

     

    문자열로 감싸준 특수한 경우는 obj.2bc이런건 안된다.

    obj['2bc']이렇게 해야 한다

     

    없는 속성을 호출하면 undefined가 나온다.

     

    객체 속성 수정하기

    zerocho.gender = 'F';

     

    객체 속성 제거하기

    delete zerocho.gender;

     

     

    함수와 배열이 객체인 이유

    function hello() {}

    hello.a = "really?';

    const array = [];

    array.b = 'wow';

     

    메서드 이해하기

    객체의 속성 값으로 함수를 넣었을 떄 이 속성을 메서드(method)라고 한다.

    const debug = {

      log: function(value) {

        console.log(value);

      },

    };

     

    debug.log('Hello, Method');

     

    <2-27. 객체의 비교(원시값과의 차이점)>

    객체는 모양이 같아도

    {} === {} 비교하면 false가 나온다.(배열, 함수도 마찬가지)

     

    따라서 같은 객체인지 비교하고 싶다면 기존 객체를 변수에 저장해 두어야 한다.

    const a = {name: 'zerocho' };

    const array = [1,2,a];

    console.log(a === array[2]);

     

    참조

    const a = { name: 'zerocho' };

    const b = a; 참조

     

    a.name = 'hero';

    console.log(b.name); //hero

    객체 간에 참조관계가 있다.

     

    객체가 아닌 값=원시값(문자열, 숫자, 불 값, null, undefined)의 경우는 조금 다르다.

    let a = 'zerocho';

    let b = a;

    a = 'hero';

    console.log(b); //'zerocho'

    이렇게 참조가 생기지 않는 상황을 복사라고 부른다.

     

    <22.3.12>

    <3-1. 순서도를 그리는 이유>

    <3-2. 기본 VS Code 사용법>

    doc+tab =>html자동완성

    브라우저에서 열기 f5-chrome

     

    <3-3. 대화창(prompt, alert, confirm)>

    const number = parseInt(prompt('몇 명이 참가하나요?'), 10); 사용자로부터 입력을 받을수 있는 창. 문자열로 인식되기 때문에, 숫자로 변환해줘야 한다.

    console.log('number', number); 콘솔로그에는 콤마로 여러값 동시에 출력가능

     

    경고창

    alert(number);

     

    const yesOrNo = confirm('맞나요?'); 사용자로부터 예, 아니오 값을 받음(확인,취소 버튼)

     

    <22.315>

    <3-4. HTML 태그 선탁하기(querySelector)>

    document.querySelector('선택자')

     

    제로초만의 규칙. 태그선택자일시, 변수앞에 $를 붙여줌.

    const $button = document.querySelector('button');

     

    태그가 여러개 있는 경우, 모두 선택하고 싶다면 document.querySelectorAll

     

    <22.3.16>

    <3-5. 이벤트 리스너 달기(콜백함수)>

    document.querySelector('input').addEventListener('input', function() {
     });

    document.querySelector('button').addEventListener('click', function() {
          console.log('버튼 클릭');
        });

     

    태그.addEventListener('이벤트 이름', 리스너함수); 리스너함수=콜백함수

     

    const onClick = function() {
          console.log('버튼 클릭');
        }
        document.querySelector('button').addEventListener('click', onClick);

     

    ocument.querySelector('input').addEventListener('input', () => {
          console.log('글자 입력');
        });

     

    document.querySelector('input').addEventListener('input', (event) => {
          console.log('글자 입력', event.target.value);
        });

     

    <3-6. 첫 번째 사람인지 판단하기>

    const onClickButton = ()=> {
          if (!word) { // 제시어가 비어 있는가?
            word = newWord;
            $word.textContent = word;
            $input.value = '';
          } else {

          }
        };
        const onInput = (event) => {
          newWord = event.target.value;
        };

        $input.addEventListener('click', onClickButton);
        $input.addEventListener('input', onInput);

     

    <3-7. 올바른 단어인지 판단하기>

    if (word[word.length-1] === newWord[0]) {
              word = newWord;
              $word.textContent = word;
              $input.value = '';

     

    const order = Number($order.textContent); //현재순서
            if (order + 1 > number) {
              $order.textContent = 1;
            } else {
              $order.textContent = order + 1;
            }

     

    <3-8. 틀렸을 때 오류 표시하기>

    $input.focus();

     

    <3-9. 순서도 최적화하기(and, or)>

     if (!word || word[word.length-1] === newWord[0])

     

    <22.3.17>

    <3-10. 셀프체크-쿵쿵따 만들기>

    prompt에 취소를 누르면 null

    parseInt(null)하면 NaN

    NaN은 if문에 들어가면 false

Designed by Tistory.