본문 바로가기

Study/JavaScript

[JavaScript] 논리연산자 변수

 

 

  • 논리연산자
  • 빈값(undefined, null)
  • 변수 let
  • 상수 const
  • 변수 var
  • 별 찍기 repeat(count)

 

 

논리연산자

 

Boolean()

  • 매개변수로 사용되는 값의 참/거짓 여부를 반환한다.
  • 문자열 또는 숫자의 bool값을 알고 싶은 경우 Boolean을 사용하여 형변환을 한다.
Boolean('a')      // true

 

 

false를 반환하는 값들 

  • 빈값,0(false), NaN, undefined, null은 false를 반환한다. 
  • Boolean대신 !!를 사용해도 같은 결과를 얻을 수 있다. 
!!'a'             // true

!!''              // false
!!' '             // true
!!0               // false
!!'0'             // true
!!NaN             // false
!!undefined       // false
!!null            // false

 

 

연산자 !

!(2<0)            // true
!2 < 0            // false 
                  // ! 연산자의 우선순위가 비교연산자보다 높다. 
                  // !2 = false = 0

 

 

빈 값 (undefined, null)

 

undefined

  • 반환값이 없을 때는 undefined를 반환한다.
  • undefined와 false는 같지 않으며, undefined는 false인 값들과 같지 않다. 
console.log("hello, world!")     // undefined 
typeof undefined                 // undefined
!!undefined                      // false

undefined == false               // false
undefined == 0                   // false
undefined == ''                  // false

 

 

null

  • null은 defined처럼 빈 값을 의미하지만, 서로 자료형이 다르다. 
  • null은 false와 같지 않으며, 다른 거짓인 값들과도 같지 않다.
undefined == null                // true  -> 빈 값은 같지만
undefined === null               // false -> 자료형은 다르다.

!!null                           // true
null == false                    // false
null == 0                        // false
null == ''                       // false

 

 

null 값 확인

  • typeof null을 사용할 경우, null 이아니라 object가 나온다.
    이는 JavaScript버그이다.
  • null 값을 확인하기 위해서는 === null 을 사용한다.

 

 

변수 let

 

변수

  • 값을 저장하고 저장한 값을 불러올 수 있게 하는 것
  • 변수를 만드는 행위는 선언(declaration)한다고 표현한다. 
  • 변수를 만드는 방법은 let, const, var 으로 총 3개가 있다. 
let string = 123213421;    // undefined
                           // 변수 선언과 함께 초기화
string                     // 123213421

let empty;                 // undefined
empty                      // undefined
                           // 값을 대입하지 않은 변수를 입력하면 undefined를 출력

 

 

변수명 주의

  • 변수명으로 사용할 수 있는 특수문자는 '$' 와 '_' 뿐이다.
  • 변수명에 숫자를 사용할 수 있으나, 숫자가 제일 처음 나오면 안 된다. 
  • 한글이나 한자, 유니코드 까지도 변수명으로 쓸 수 있다. 
  • 예약어는 자바스크립트 프로그래밍에서 특정한 역할을 하므로 변수명으로 쓸 수 없다. 
let $_ = 'hello'           // undefined
let 안녕 = 'hi'             // undefined

let banana3;               // undefined
let 3banana;               // 에러발생

let let;                   // 예약어 아님
let class;                 // 예약어

 

 

let 과 class 의 차이

  • let과 class 둘 다 예약어이지만, let은 유일하게 예약어가 아니었던 적이 있기 때문에 에러메시지가 상이하다. 

 

변수 바꾸기

  • 선언은 undefined이지만 변경은 값을 가진다. 
  • undefined, null 둘 다 변수값을 비우는 역할을 한다. 
    그러나 undefined는 기본값이고, null은 개발자가 임의로 정해주는 값이기 때문에
    개발자가 의도를 가지고 변수를 비울 경우, null로 바꾸는 것이 더 명확하다.
let fruit = "apple"        // undefined
fruit = "banana"           // banana

fruit = undefined          // undefined
fruit = null               // null

 

 

상수(const)

 

상수

  • const는 상수(constant)의 줄임말이다. 
  • 상수는 변하지 않고 고정된 값을 담을 때 사용한다. 
  • const는 객체의 내부 값에서는 적용되지 않기 때문에 엄밀히 말해 상수가 아니다. 따라서 const도 보통 변수라고 부르곤 한다. 
  • 한번 값을 대입하면 다른 값을 대입할 수 없다는 특성이 있기 때문에 , 상수는 선언과 동시에 초기화를 하지 않으면 에러가 발생한다. 
const value = "상수"           // undefined
value = "상수아님"              // 에러발생
                              // 상수는 변하지 않는 수. 값을 바꿀 수 없다.
                              
let value2                    // empty
const value3                  // 에러발생
                              // const 는 값을 바꿀 수 없으므로 처음에 값을 선언하지 않으면 에러가 발생한다.

 

 

변수 var

 

var 

  • var는 변수(variable)의 줄임말이다. 
  • 예전에는 많이 사용했으나, const와 let을 사용해 변수를 선언하는 방식으로 옮겨가고 있다. 
  • 과거에는 var을 많이 사용했으므로 var의 특성은 알아두는 것이 좋다. 

 

1. var은 선언할 때 초기화 하지 않으면 에러가 발생하는 대신 undefined가 대입된다는 점에서 let과 비슷하다

   하지만  var은 기존에 선언했던 variable변수를 다시 선언해도 에러가 나지 않는다

var variable = "변수"          // undefined
variable = "바꿀수있다."         // undefined
                              // 값을 변경할 수 있으며 let 과 매우 유사하다. 

var value4 = "선언"            // undefined
var value4 = "다시선언"         // 값을 다시 선언 할 수 있으며 let은 이때 에러가 발생한다.
let value5 = "선언"            // undefined
let value5 = "다시선언"         // 에러발생!
                              // let은 재선언 할 수 없다.

 

 

2. 예약어를 변수명으로 사용할 수 있다. 

var undefined = "undefined"   // undefined
var Infinity = "Infinity"     // undefined
var let = "let"               // undefined
                              // var 은 예약어를 변수로 사용할 수 있다. 
                              // var 을 사용하면 직관적으로 알기 어려운 부분이 많기때문에 let을 사용한다.

 

이와 같이 var을 사용하여 변수를 선언할 경우, 실수로 변수를 다시 선언하는 문제가 발생할 수 있고 예약어를 변수명으로 쓰게 되면 개발자가 코드를 이해하는 데에 혼란을 줄 수 있다. 

 

 

 

 

별 찍기

 

repeat()

str.repeat(count);
  • 문자열을 매개변수 count 만큼 반복한 새로운 문자열을 반환한다.
  • 매개변수 count : 문자열을 반복할 횟수. 0과 양의 무한대 사이의 정수. [0, +∞)
  • 반환값 : 현재 문자열을 주어진 횟수만큼 반복해 붙인 문자열