Day 1. 변수, 타입, 함수, 조건문

냐하호후·2021년 6월 15일
0

TIL

목록 보기
1/101

6/15

자바스크립트는 동적 타입 언어이다.

변수

값의 위치(주소)를 기억하는 저장소를 의미함
값이 위치하고 있는 메모리 주소에 접근하기 위해 사람이 이해할 수 있는 언어로 명명한 식별자이다.
변수는 고정된 타입이 없다. 따라서 같은 변수에 여러 타입의 값을 자유롭게 할당할 수 있다.

타입

데이터 타입은 프로그래밍 언어에서 사용할 수 있는 데이터의 종류를 말한다.

자바스크립트의 모든 값은 데이터 타입을 갖는다. 총 7개의 데이터 타입이 있다.

1. 원시타입(Primitive Data Type)

원시 타입의 값은 변경 불가능한 값이며 pass-by-value(값에 의한 전달)이다.

Number

자바스크립트에서는 하나의 숫자 타입만이 존재한다.

수학적 의미의 실수(real number)는 허수(imagenary number)가 아닌 유리수와 무리수를 통틀은 말이지만,
프로그래밍 언어에서 실수는 일반적으로 소수를 가리킨다.

-소수(prime number)
1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다. 예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수이다.

String

문자열(string)타입은 텍스트 데이터를 나타내는데 사용한다.
문자열은 작은 따옴표(‘’) 또는 큰 따옴표(“”) 안에 텍스트를 넣어 생성한다. 가장 일반적인 표기법은 작은 따옴표를 사용하는 것이다.

C와 같은 언어와는 다르게, 자바스크립트의 문자열은 원시 타입이며 변경 불가능(immutable)하다. 이것은 한 번 문자열이 생성되면, 그 문자열을 변경할 수 없다

Boolaean

불리언 타입의 값은 논리적 참,거짓을 나타내는 true/false 뿐이다.
비어있는 문자열과 null, undefined, 숫자 0은 false로 간주된다.

Undefined

undefined 타입의 값은 undefined가 유일하다. 선언 이후 값을 할당하지 않은 변수는 undefined 값을 가진다. 즉, 선언은 되었지만 값을 할당하지 않은 변수에 접근하거나 존재하지 않는 객체 프로퍼티에 접근할 경우 undefined가 반환된다.

이는 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이루어질 때까지 빈 상태(대부분 비어있지 않고 쓰레기 값(Garbage value)이 들어 있다)로 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화하기 때문이다.

Null

null 타입의 값은 null이 유일하다. 자바스크립트는 대소문자를 구별(case-sensitive)하므로 null은 Null, NULL등과 다르다.

프로그래밍 언어에서 null은 의도적으로 변수에 값이 없다는 것을 명시할 때 사용한다.

Symbol

유일하고 변경 불가능한 기본값

2. 객체 타입(Object type,Reference type)

객체는 데이터와 그 데이터에 관련한 동작(절차, 방법, 기능)을 모두 포함할 수 있는 개념적 존재이다. 달리 말해, 이름과 값을 가지는 데이터를 의미하는 프로퍼티(property)와 동작을 의미하는 메소드(method)를 포함할 수 있는 독립적 주체이다.

자바스크립트는 객체(object) 기반의 스크립트 언어로서 자바스크립트를 이루고 있는 거의 “모든 것”이 객체이다. 원시 타입(Primitives)을 제외한 나머지 값들(배열, 함수, 정규표현식 등)은 모두 객체이다. 또한 객체는 pass-by-reference(참조에 의한 전달) 방식으로 전달된다.

타입 체크

1. typeof

타입 연산자(Type Operator) typeof는 피연산자의 데이터 타입을 문자열로 반환한다.

typeof(1); //number

2. Object.prototype.toString

Object.prototype.toString 메소드는 객체를 나타내는 문자열을 반환한다.

3. instanceof

함수

함수란 어떤 작업을 수행하기 위해 필요한 문(statement)들의 집합을 정의한 코드 블록이다. 함수는 이름과 매개변수를 갖으며 필요한 때에 호출하여 코드 블록에 담긴 문들을 일괄적으로 실행할 수 있다.

함수 정의

함수를 정의하는 방식은 3가지가 있다.

함수 선언문
함수 표현식
Function 생성자 함수 (잘 쓰이지 않는다)

함수 선언문

function getRectangleArea (width, height) {
  let rectangleArea = width * height
  return rectangleArea
}

함수 표현식

let getRectangleArea = function (width, height) {
  let rectangleArea = width * height
  return rectangleArea
}

조건문

if(...)문은 괄호 안의 표현식을 평가하고 그 결과를 불린값으로 변환한다.

else 와 else if

if문엔 else절을 붙일 수 있다.

차이가 있는 조건 여러개를 처리해야할 경우 else if를 사용한다.

기억해야할 6가지 falsy 값

  1. if (false)
  2. if (null)
  3. if (undefined)
  4. if (0)
  5. if (NaN)
  6. if ('')

논리연산자

동등 / 일치 비교 연산자

x==y 동등비교 (x와 y의 값이 같음) ->오류가 많아서 잘 사용하지 않는다
x===y 일치비교 (x와 y의 값과 타입이 같음)
x!=y 부등비교 (x와 y의 값이 다름)
x!==y 불일치비교 (x와 y의 값과 타입이 다름)

undefined와 null

이 두 타입은 모두 자바스크립트에서 '값이 없음'을 나타낸다.

undefined

기본적으로 값이 할당되지 않은 변수는 undefined 타입이며, undefined 타입은 변수 자체의 값 또한 undefined 이다.

즉, 정의되지 않은 것, 초기화되어 있지 않거나 존재하지 않는 객체의 프로퍼티 및 존재하지 않는 배열의 원소값에 접근하려고 할때 얻어지는 변수의 값
결론적으로 undefined는 데이터 타입이자, 값을 나타낸다.

null

이에 반해 null 타입 변수의 경우는 명시적으로 값이 비어있음을 나타내는데 사용한다.
다시 말해서, 아무것도 참조하고 있지 않다라는 의미가 담겨 있으며 주로 객체를 담을 변수를 초기화할 때 많이 사용한다.
하지만 null 역시 undefined와 마찬가지로 값이며 데이터 타입입니다.
분명한 차이점은 undefined는 변수를 선언만 하더라도 할당되지만 null은 변수를 선언한 후에 null로 값을 바꾼다는 점이다.
보통 아무 값도 갖지않음을 나타낼때 사용한다.

즉, 특별한 값을 평가하는 키워드인 셈이다. 값은 값인데 비어있는 값(아무런 값이 아닌 값)으로 이해하면 된다.

실제로 null은 전형적인 고유 값이며 객체, 숫자, 문자열에서 '값이 없음'을 no value를 가리킬때 사용 할 수 있다.

+)검색을 할때에는 이렇게 입력해보자

  1. MDN과 키워드를 같이 검색
    --> MDN "키워드"
  2. HOW TO ~ + in JavaScript
    --> How to convert to string in JavaSCript
  3. 에러 메시지는 있는 그대로 검색하자
    --> Stack overflow 참조 (체크된 답변 위주)
profile
DONE is better than PERFECT

0개의 댓글