3일차

1. 비교 연산자

1.1 비교 연산자

  • 비교 연산자는 불린형을 반환한다.

  • 문자열을 비교할때, 유니코드 순으로 비교를 하고, 뒤쪽의 문자열 일수록 크다고 생각한다.

  • 각 위치별로 비교를 하고, 한쪽이 크면 큰 곳의 값을 반환하고, 종료한다.

  • 만약 비교가 종료되었는데도, 동일하고 한쪽 문자열의 길이가 더 길다면, 긴 문자열이 더 크다고 결론 낸다.

    alert('B'>'C') //false
    alert('BEE'>'BE') //true
  • 만약 다른형을 가진 값끼리 비교를 했을 때에는, 이 값들을 숫자형으로 변환 뒤 비교를 한다.

    alert('2'>1) //true
    alert('0'==0) // true
    alert(true == 0) //false
  • 문자열 '0'Boolean으로 판단시 false가 나오지만, 비교연산자로 0과 비교시 true를 반환한다.

    • 그 이유는 위의 설명과 같이 문자열을 숫자형으로 바꿔서 비교했기 때문이다.

1.2 일치 연산자

  • 비교연산자 중 비교 연산자는 0false를 구분하지 못하므로, 좀더 엄격하게 비교를 할때에는 일치 연산자 를 사용하여, 값을 비교한다.
  • 일치연산자나 불일치연산자(!==)를 사용하면, 형변환 없이 값을 비교할 수 있으므로, 좀 더 엄격하게 비교할때 사용이 된다.

1.3 null과 undefined

  • nullundefined를 일치연산자를 하면, 자료형이 달라서 false를 반환하지만, 동등연산자인 ==를 하면 true를 반환한다.
alert(null == undefined)  // true
alert(null === undefined )//false
  • 그러나, 비교연산자를 이용해 null0으로 변환, undefinedNaN으로 변환된다.
  • nullundefined는 동등연산자 ==일때는 형변환을 하지 않고, 비교연산자인 >= ,>일때는 형변환을 한다.
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
  • undefinednull은 동등연산자에서 null이나 undefined가 아니면 false를 반환한다.

2. if와 '?'를 사용한 조건 처리

2.1 if

  • if문은 괄호안의 조건을 평가해, 그 결과가 true라면 코드 블록을 실행한다.
  • if문은 괄호안의 조건을 불린값을 변환한다.
    • 0,"",null,undefined,NaN 값은 false로 변환, 그 외의 값은 true로 반환한다.
  • if문의 코드블록은 단 한줄이더라도 {}중괄호롤 감싸는걸 추천한다.

2.2 else 문

  • else문은 if문 안의 조건이 false일 때 실행된다.

2.3 else if 로 복수 조건 처리하기

  • 다수의 조건을 처리할 때, if문 뒤에 else if문을 더 붙여 조건을 판단한다.

2.4 조건부 연산자 ?

  • 조건부 연산자는 if문을 좀 더 간결하게 표현가능하다.

    let result = condition ? value1 ? value2
    // condition이 참이면, value1을 반환, 거짓이면 value2를 반환

2.5 다중 ?

let result = (condition1) ? value1 : 
(condition2) ? value2 : 
(condition3) ? value3 :
value4;
  • 위의 예시의 같은 경우 codition1이 참이면 value1, 거짓이면 두번째 condition2로 간다.
  • condition2가 참이면 value2를 거짓이면 condition3로 간다.
  • condition3이 참이면 value3 거짓이면 value4를 반환한다.
if (condition1) {
    result = value1
} else if (condition2){
    result = value2
} else if (condition3) {
    result = value3
} else{
    result = value4
}
  • 위의 다중 ?은 다음과 같이 나타낼수 있다.

Appendix

  • 조건부 연산자 ?를 남용하지 말고, 조건에 따라 다른 반환값을 할당해야할때만 쓰는 것을 추천한다.

3. 논리 연산자

  • 논리연산자에는 `||`(OR),`&&`(AND),`!`(NOT)이 있다.

  • `OR`와 `AND`는 파이썬과 같은 단축평가를 한다.

  • `OR`연산자는 가장 첫번째 `truthly`인 피연산자를 반환하고, 만약 전부 `false`일시에는 마지막 피연산자를 반환한다.

alert(""||0||5) //5
alert(""||5||0) //5
  • `AND`연산자는 `OR`과 반대로 첫번쨰 `falsy`인 피연산자를 찾는다. 첫번쨰 `falsy`인 피연산자를 반환하고, 만약 전부 `true`일 시에는 마지막 피연산자를 반환한다.
alert(5&&0&&3) // 0
alert(5&&4&&2) //2
  • `AND` 연산자가 `OR` 연산자보다 우선순위가 높다.

  • `Not`연산자는 느낌표인 `!`을 쓰는데, 먼저 피연산자를 불린형으로 변환후 이에 반대되는 값을 반환해준다.

  • 위와 같은 특징을 이용하면, `!!` 와 같이 `Not`연산자를 두개 연속으로 쓸시에는 `Boolean` 함수를 쓴것과 동일한 효과를 나타낸다.

  • `Not`은 논리연산자 중 가장 높은 우선순위에 있다.

4. null 병합 연산자

  • 병합연산자인 ``??``를 사용하면, 짧은 문법으로 그 값이 **확정되어있는** 변수를 찾을수 있다.

    x = a ?? b
    x = (a !== null && a!== undefined) ? a : b;
  • 위의 두 로직이 같다고 할 수 있다.

  • `??`와 `||`(OR)와 비슷하다고 생각할 수 있지만, `||`는 첫번쨰 `truthy` 값을 반환하는데 반해 `??`은 **정의된** 값을 반환하는게 다르다.

alert(0 || 100) // 100
alert(0 ?? 100) // 0
  • `OR`연산자는 숫자 0 은 `false`이므로, 100을 반환해주고, `??`은 연산자는 0이라는 정의되므로, 0을 반환해준다.

  • `??`연산자는 `||`와 `&&`연산자와 동시에 사용하는것을 금지한다! 함께 사용시 문법에러가 발생한다.

3일차 소감

  • 잘 모르던 null 병합연산자와, `?`을 이용한 다중 조건 처리

  • 일치 연산자에서 `null`과 `undefined`의 동작방식에 대해 잘 알 수 있었다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 1일차  (0) 2021.02.19
자바스크립트 공부 스타트  (0) 2021.02.19

2일차 자바스크립트 스터디

1. alert,prompt,confirm을 이용한 상호작용

1.1 alert

  • alert 창은 작은 모달창을 띄우고, 사용자가 모달창 내의 버튼을 누르기 전까지 나머지 부분과 상호작용이 불가능하다.

1.2 prompt

prompt(title,[default])
  • prompt는 사용자에게서 입력을 받을 수 있는 창을 띄우고, 사용자가 입력을 하기도 하며, 취소를 누를수도 있다.
  • 만약 사용자가 입력할시 문자열을 반환 해주고, 취소할시에는 null 값을 반환한다.
  • defalut는 초기값을 뜻하며, 필수요소는 아니다.

1.3 confirm

confirm(question)
  • confirm은 매개변수로 받은 question에 대한 확인 취소 버튼이 있는 모달창을 보여준다.
  • 확인 버튼은 true 그외의 행동은 false를 반환한다.

1.4 요약

  • 모달 창의 위치는 브라우저가 결정하고, 대개 브라우저의 중앙에 위치한다.
  • 그리고 위 모달창을 떠 있는 시간 동안은 스크립트의 실행이 일시 중단되고, 사용자가 창을 닫기 전까지는 나머지 페이지와 상호작용이 안된다.
  • 모달 창의 모양은 브라우저마다 다르고, 개발자가 모달창의 모양을 수정할 수 없다.

2. 형 변환

함수와 연산자에 전달되는 값은 적절한 자료형으로 자동 변환된다. 이런 과정을 형변환 이라고 한다.

형변환은 전달받은 값을 의도를 갖고 원하는 타입으로 변환을 할때에도 해당된다.

2.1 문자형으로 변환

let value = 123
value = String(value)
alert(typeof value)
  • 문자형은 대부분 예측 가능한 방식으로 일어난다.

2.2 숫자형으로 변환

let str = '123'
alert(typeof str) // string
let num = Number(str)
alert(typeof num) // number
  • 숫자형으로 형변환시, 숫자 이외의 글자가 들어있는 문자열을 숫자형으로 변환시 NaN이 된다.
  • undefined -> NaN
  • null -> 0
  • true,false ->0,1
  • string -> 양 끝의 공백을 제거 후 공백제거 후 남아있는 문자열이 없으면 0 문자열내에 숫자를 제외한 문자가 있으면 NaN이 반환된다.

2.3 불린형으로 변환

alert(Boolean(1)) //true
alert(Boolean(0)) //false
  • 숫자 0, 빈 문자열 ,null,undefined,NaN과 같은 값들은 false가 된다
  • 문자열 "0"" "false가 아닌 true가 반환된다.

3. 기본 연산자와 수학

  • 피연산자를 하나만 받는 연산자는 단항 연산자
  • 두개의 피 연산자를 받는 연산자는 이항 연산자

3.1 수학 연산자

  • *,(곱셈)

  • +(덧셈)

  • -(뺄셈)

  • /(나눗셈),

  • %(나머지연산자)

  • **(거듭제곱)

3.2 이항 연산자 +와 문자열 연결

  • 덧셈 연산자는 피연산자로 문자열이 전달되면 덧셈연산자는 덧셈이 아닌 문자열을 병합을 한다.
  • 두개의 피연산자 중 하나가 문자열이면, 다른 하나도 자동으로 문자열로 형 변환을 해서, 병합을 한다.
alert(2+2+'1') // 4+'1'이 되어 '41'이 출력된다.
  • +가 아닌 다른 수학연산자는 피연산자를 숫자형으로 변환시키고 계산하는 것과 대조적이다.

3.3 단항 연산자 +와 숫자형으로의 변환

  • 덧셈 연산자는 단항 연산자로 쓰인다.
  • 단항연산자로 쓰일때에는 문자열인 숫자를 숫자형으로 변환을 해준다. Number와 동일한 일을 해준다.

Appendix

  • 연산자 우선순위 표 를 보면, 각 연산자마다 우선순위가 있고, 우선순위가 높은것부터 적용된다.

3.4 할당연산자

  • =도 할당 연산자이기 때문에 x = value라 하면, x에 value를 할당하고, 그 값인 value를 반환한다.

  • 위와 같은 특징을 이용해 다음과 같은 예제도 가능하다.

    let a = 1;
    let b = 2;
    
    let c = 3 - (a = b + 1);
    
    alert( a ); // 3
    alert( c ); // 0
  • b+1a에 할당되고, 할당된 값 3이 그대로 반환되어 3-3을 연산하여, c에 0이 할당된다.

  • 할당 연산자 체이닝

    • let a, b, c;
      
      a = b = c = 2 + 2;
      
      alert( a ); // 4
      alert( b ); // 4
      alert( c ); // 4
    • 위의 특징을 이용해서, 할당 연산자 체이닝이 가능하지만, 가독성이 좋지 않으므로, 추천하지 않는 방식이다.

3.5 복합 할당 연산자

  • 복합할당 연산자는 짧은 문법으로 연산을 하고 싶을때 쓰인다.
  • +=,/=,*= 등을 쓸 수 있다.
  • 복합할당 연산자의 우선순위는 할당 연산자와 동일 하므로, 다른 연산자가 실행된 후 복합할당 연산자가 실행된다.
let n = 2;

n *= 3 + 5;

alert( n ); // 16  (*=의 우측이 먼저 평가되므로, 위 식은 n *= 8과 동일합니다.)

3.6 증가 감소 연산자

  • 증가/ 감소연산자는 변수에만 쓸 수 있다.

  • 숫자를 하나 늘리거나 줄이는 것에 자주 사용되는 연산자.

  • 종류에는 후위, 전위 연산자가 있는데, 위치에 따라 반환되는 값이 다르다.

  • 기본적으로 같은 연산을 하지만 전위 연산자 같은 경우, 먼저 증가/감소 연산을 한뒤, 그 값을 반환을 해준다.

  • 후위 연산자같은 경우, 원래의 값을 반환을 한뒤, 증가/감소 연산을 해준다.

    let counter = 1;
    let a = ++counter; // (*)
    
    alert(a); // 2
    
    let counter = 1;
    let a = counter++; // (*) ++counter를 counter++로 바꿈
    
    alert(a); // 1

3.7 비트 연산자

  • 32비트 정수로 변환하여, 이진 연산을 수행하는 연산자이다.
  • AND &
  • OR |
  • XOR ^
  • NOT ~
  • 왼쪽 쉬프트 <<
  • 오른쪽 쉬프트 >>
  • 부호 없는 오른쪽 시프트 >>>

3.8 쉼표 연산자

  • 쉼표 연산자는 자주 쓰이지는 않지만, 알아두면 좋은 연산자.
  • 기본적으로 할당 연산자 인 =보다 낮으므로, 연산을 할때 주의해야한다.
  • 왼쪽부터, 오른쪽으로 점차 평가하면서, 가장 오른쪽에 있는 값을 반환해준다.

2일차 소감

  • 오랜만의 공부이면서, 가장 기초적인 것을 복습하는 느낌이다.
  • 보통 감으로 예측했던 이항연산자에서의 +의 작동방식이나, 이항연산자에서 +을 제외한 나머지 연산자의 작동방식에 대해서 다시 공부한 느낌이다.
  • 일단 이번주 목표는 6-11까지 끝내는게 목표이다. 좀 더 속도를 높여야겠다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 1일차  (0) 2021.02.19
자바스크립트 공부 스타트  (0) 2021.02.19

1일차 자바스크립트 스터디

1. 코드 구조

  • 줄바꿈시 암시적으로 세미콜론으로 해석한다 이걸 세미콜론 자동삽입이라 한다.
    • automatic semicolon insertion
    • 그러나 항상 줄바꿈이 세미콜론을 의미하지 않는다. 그 예로 연산자 뒤에 줄바꿈을 할 시, 세미콜론이 필요로 하지 않는 불안전환 표현식으로 판단해서, 세미콜론을 추가하지 않는다.
    • 대괄호 같은 곳 앞에 세미콜론를 생략할시, 에러가 발생하는데, 대괄호 앞에 세미콜론이 있다고 가정하지 않기 때문이다.
    • 그러므로 줄바꿈으로 문을 나눴더라도 세미콜론 삽입을 추천한다.

2. 엄격모드

  • "use strict" 자바스크립트 파일 최상단에 다음과 같이 선언을 하면 엄격모드가 실행된다.

    • 최상단에 위치 시키지 않으면 엄격모드가 실행되지 않는다.

    • 한번 엄격모드를 실행하면, 취소할 방법은 없다.

    • 브라우저가 오래되서 엄격모드를 실행하지 못할 시 래퍼로 감싸면 된다.

      function(){
          'use strict'
      }

3. 변수와 상수

3.1 변수

  • 변수(Variable)을 선언하는데에는 여러가지 방법이 있다.

    let message;
    message = 'hello';
    let message = 'user',
        age = '28',
        name = 'mmm';
  • 변수는 동일한 변수명으로 여러번 선언하지 못한다.

  • 병수 명명 규칙

    • 변수명에는 오직 문자와 숫자 그리고 기호 $_만 들어갈수 있다.
    • 첫글자는 숫자가 될수 없다.
  • 카멜 표기법을 사용한다.

  • 대소문자가 구별되고, 예약어는 선언할 수 없다.

  • 엄격모드가 없을시 let을 안해도 변수가 할당된다. 하지만 권장하지 않는다.

3.2 상수

  • 상수는 변화하지 않는 변수를 선언할떄 쓰인다.
  • const로 선언한다.
  • 상수로 선언할 경우 재할당 할 수 없으므로, 상수를 변경하다보면 에러가 발생한다.
  • 중요한 값들이나, 하드코딩한 값들의 별칭을 기억하기 쉽게 할려고 대문자로 선언한다.

3.3 바람직한 변수명

  • 변수명은 간결하고 명확해야한다.
  • 변수를 읽고 해당 변수가 어떠한 기능을 하는지 최대한 서술된 변수명을 사용하자
  • User 같이 단순한 User가 아니라 newUser oldUser와 같이 명시적으로 어떤 유저인지 구분이 가능하도록 변수를 선언하도록 하자.

4. 자료형

  • 자바스크릅티는 8가지 기본 자료형이 있다.
  • 자바스크립트는 자료의 타입은 있지만 변수에 저장되는 값의 타입이 언제든지 바뀔수 있다.
  • 위와 같은 특징을 가진 언어를 동적 타입 언어라고 한다.

4.1 숫자형

  • 숫자형은 정수와 부동소수점 숫자를 나타내며, Infinity,-Infinity,NaN와 같은 특수 숫자값 도 있다.
  • NaN은 계산 중에 에러가 발생했다는 것을 나타내주는 값으로, 부정확하거나 정의되지 않은 수학연산을 사용할때 나온다.
  • NaN값은 쉽게 변하지 않으므로, 뒤의 연산에도 영향을 끼쳐 NaN이 반환되는 경우가 많다.

4.2 BigInt

  • BigInt는 (2^53-1)보다 크거나 -(2^53-1)보다 작은 숫자형을 사용해야할 경우 쓰인다.

  • 쓰는방법은 정수리터럴 끝에 n을 추가해주면 된다.

    let bigInt = '1231486192486846198249812649819845734961093759123648789n'

4.3 문자형

  • 자바스크립트에서는 문자열을 따옴표로 묶을수 있는데, 총 세종류가 있다.
  • 작은따옴표('') 와 큰 따옴표("")는 일반적인 상황에서 사용된다.
  • 백틱 같은 경우 ${...}를 중간에 넣어주면, 변수나 표현식을 문자열 중간에 넣을수 있다.

4.4 불린형

  • 논리 타입은 truefalse를 나타낸다.

4.5 null 값

  • 보통 다른언어에서는 존재하지 않는 객체의 참조를 나타낼때 많이 쓰지만, 자바스크립트에서는 존재하지 않거나 비어있거나 알수 없는 값일때 사용한다.

4.6 undefined 값

  • 변수를 선언했지만 해당 변수에 값을 할당되지 않았을 때 자동으로 할당되는 값이다.
  • null과 비슷하지만, 변수가 비어있거나 알수 없는 상태를 나타낼때에는 null을 쓰고, undefined는 할당되지 않은 변수의 초기값에 쓰이게 두도록하자

4.7 객체와 심볼

  • 객체형은 다른 자료형과 달리 데이터 컬렉션이나 복잡한 개체를 표현할때 쓰인다.
  • 심볼형은 객체의 고유한 식별자를 만들때 사용된다.

4.8 typeof 연산자

  • 인수의 자료형을 반환하는데, 두가지 형태를 지원한다.

    typeof x
    typeof(x)
  • 두 형태다 결과가 동일하고, 인수의 자료형을 반환해준다.

    • 주의해야할 점
      • null 같은 경우 별도의 고유한 자료형을 가진 값이지만, 객체로 반환된다. 실제로 객체가 아니지만, 하위 호환성을 유지하기 위해서 유지되는 오류이므로 유의해야한다.
    • typeof의 인수가 함수이면 function을 반환한다.

1일차 소감

  • 기본자료형 중 null 값이 typeof시 objects를 반환하는지 몰랐다. BigInt형은 처음보았따.
  • 기초지만 하나하나 다시 공부해봐야겠다.

출처 : 모던 자바스크립트 튜토리얼

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 스타트  (0) 2021.02.19

지금까지 자바스크립트를 수박 겉핥기 식으로 배우고 기본적인 Array, Object 메소드들만 외우고, 사용했었는데

 

Vue를 이용했을때에는, 컴포넌트, 메소드, 상태관리에 대한걸 vue, vuex 등이 전부 관리해주어서, 자바스크립트에 대한

 

심화적인 공부를 안했는데, 카카오커머스 2차 과제를 준비하면서 컴포넌트 및 상태관리를 구현하다보니

 

자바스크립트에 대한, 심화적인 공부가 필요하다는 걸 느꼈다.

 

그래서 Vanliia Javascript에 대해 처음부터 다시 공부해보는 시간을 가질려고 한다.

 

이렇게 글이라도 안쓰면, 언제까지고 안할것 같아서 일단 저지르고 본다.

 

일단 자바스크립트 공부는  developer.mozilla.org/ko/docs/Web/JavaScriptko.javascript.info/ 를 공부하면서 


그걸 나름대로 정리해서 올리겠다. 공부한걸 정리한 포스팅이 주를 이룰것 같고,

자세한 설명은 위 두사이트를 찾아가는걸 추천하겠다.

'프로그래밍언어 > Javascript' 카테고리의 다른 글

자바스크립트 공부 3일차  (0) 2021.02.26
자바스크립트 공부 2일차  (0) 2021.02.24
자바스크립트 공부 1일차  (0) 2021.02.19

+ Recent posts