본문 바로가기
IT 공부/Javascript

javascript 기본. 자바스크립트란? 변수와 상수, 자료

by 쭈잇 2024. 12. 2.

Contents

    반응형

    자바스크립트란?

    자바스크립트는 인터프리터 언어

    -컴파일 언어 

    : 코드 -> 컴파일 -> 실행 

    -인터프리터 언어 (따로 포장하거나 가공하는 과정 없음)

    바로 실행 => 버그가 덜 걸러지고 실행은 좀 느리지만 딱히 차이 없음

     

    동적 자료형
    숫자로 저장한 변수에 객체나 함수 등으로 바꿀 수 있음.

    코딩이 자유롭지만, 에러가 날 가능성

    => 이를 보완한 자바스크립트 코드를 엄격한 과정을 거쳐 생성해주는 타임스크립트 언어가 있음


    자바스크립트는 객체지향적인 언어지만, 자바랑은 또 색다름

    프로토타입 기반, (클래스 방식보다도 강력)

    일급 객체를 이용해서 함수형 프로그래밍을 할 수 있음

     

    *Babel (코드 변환 소프트웨어)

    최신 문법인 자바스크립트 코드를 예전 버전으로 자동으로 번역해서 사용할 수 있어

    어떤 버전에서 나온 건지 상관없이 마음껏 쓸 수 있음. 오👀

     

    변수와 상수

    변수

    (var는 요즘 안씀)

    let x=1;

    let y-1;

    =>  변수영역에 x,y 생기고 ,  메모리영역에 undefined, 1 생김. x, y는 1을 다 가리킴.
    (undefined는 항상 생성된다함)

    *  C언어와 달리 메모리상 가리키는 위치가 변경됨.
    (기존 위치에 새 값을 넣는게 아님-> 차지하는 자리가 다른 크기의(자료형이 다른) 데이터가 재할당될 수 있어서!! )

     

    let x = 1;

    let x= 2;  

    =>불가능하다!! x라는 식별자가 이미 있으니까 안됨(var는 가능했었음)

     

    상수

    const a = 1; (선언과 동시에 값도 넣어줘야함) 바뀔 수 없는 상수

     

    컴퓨터가 일하는 방식

    1) CPU : 일하는 사람 (컴퓨터 뇌), 작업을 진행하는 주체

    2) 보조기억장치 (SSD, HDD) : 서랍. 저장공간은 넓지만 접근속도는 느림.

    => 소프트웨어(코드)가 저장되는 곳

    3) 메모리(RAM) : 책상위 공간. 저장공간 좁고, 접근 속도 빠름

    사람이(CPU)가 서랍(보조기억장치)에 든 데이터를 꺼내 올려두고 작업하는 공간

    변수, 상수를 비롯한 데이터들이 이곳에서 만들어지고 사용됨

    ** 메모리를 효율적으로 사용하기 위한 지식과 노력 필요!

     

    자료형( 데이터 종류)

    1) 원시 자료형 ( 값 하나만 담는 단순 자료형)

    boolean, number, undefined, null

    undefined: 뭔지 모른 값.(아직 할당 되지 않은), 반환하는 값이 없는 그런 코드 -> undefined 나옴

    null : 비어있다는 값. 의도적인 빈 값. /

    typeof 하면 객체를 반환! (그래서 진짜 객체랑 null 이랑 typeof로는 비교불가

    => x === null 이렇게 판단)

     

    2) 정적/동적타입

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

    특정 값이 할당된 변수에 그 외 다른 자료형 값을 넣는게 가능! 그래서 오류에 취약!

    function getUpper(str){
    returnstr.toUpperCase();
    }
    getUpper(1);

    정적언어(컴파일언어)는 컴파일 단계(포장단계)에서 오류를 반환. 실행하기도 전에!

    동적언어(인터프리터)는 과정 없이 바로 진행해서 사용자 컴퓨터에서 오류 발생이나 의도와 다른 것이 출력

     

    문자열

    * `(백틱) 개편한거 있음.

    문자열 안에 탭이랑 줄바꿈 그대로 사용이 가능

    `1 +2 = ${1+2} 이다`

     

    연산자

    x == y // 값비교
    x === y // 자료형과 값이 같음
    x != y // 값비교
    c !== y // 자료형 또는 값이 다름

    // 문자와 숫자 비교에서는, 문자를 숫자로 변환!!

    '1' == 1
    // 문자와 숫자 비교에서는, 문자를 숫자로 변환!!
    // 원래 문자랑 숫자여서 아닌데,
    // 얘가 둘 값이 같으니 알아서 둘 중 하나로 맞춰서 값비교

     

    x + y
    x += y (부수효과가 있음. 값이 변경 될수도)
    * 부수효과는 위험함. 예상치 못한 결과가 나올 수도

    let str3 = 'aa';
    str3 += 'vv';
    str3가 바뀌는

     

    Number

    Infinity 무한대 : typeof가 Number임!! + 도 있고 -도 있음

    Nan ( Not a Number ) : 숫자가 아닌 것. typeof 는 Number 임

    let a = 1 / 'asd';
    console.log(a, typeof a);
    Nan, 'number' //숫자가 아닌 것

    a == Nan //false
    a === Nan //false
    isNaN(a) // true. 숫자가 아닐 시 true
    Number.isNaN(a) //true. 보다 엄격한 버전

    Nan 체크는  isNan 이나 Number.isNan() 사용

     

    || 연산자 : 둘중 하나만 true

    *** 값이 빈 문자열이 아니면 true 로 평가됨!!

    값 || true :  값
    값 || false : 값

    true || 값 : true

    false || 값 : 값

    값 A || 값 B : 값A

    &&연산자 : 둘다 같아야만 true or false 

    false && 값 : false

    true && 값 : 값
    값 && false : false

    값  && true : true

    값A && 값B : 값B

     

    삼항연산자

    let y = x ? 'o' : 'x';


    기타 연산자
    1. 쉼표 연산자

    왼쪽부터 차례로 실행하고 마지막 것을 반환

    let x = 1, y = 2, z= 3;
    console.log(
    ( ++x, y += x, z*= y)
    );

     

    2. ?? null 병합 연산자

    || 와 다르게, null 또는 undefined만 대체함!!

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    참고) 얄팍한 코딩사전

    반응형