주사위의 개발일지
  • [Javascript] 동적 타입 언어 자바스크립트 자료형 변환: '문자'와 숫자의 사칙연산
    2024년 02월 22일 14시 30분 05초에 업로드 된 글입니다.
    작성자: 주사위 clice
    반응형

     

     

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

    https://stackoverflow.com/questions/1517582/what-is-the-difference-between-statically-typed-and-dynamically-typed-languages

     

    언어는 크게 동적타입언어, 정적 타입언어, 강타입 언어, 약타입 언어로 나눌 수 있다.

     

    동적 자료형 언어는 런타임 시에 변수의 자료형이 결정된다.

    예시로는 Python, JavaScript, PHP, Ruby 등이 있다.

    자료형이 런타임에 결정되기 때문에, 코드 작성 시 자료형을 명시적으로 지정해 줄 필요가 없다.

     

    반면 정적 자료형 언어 컴파일을 할 때 변수의 타입이 결정된다.

    예시로 C, C++, Java, C#, Scala 등이 있다. 

    자료형이 컴파일을 할 때 결정되기 위해서는, 코드 작성 명시적으로 자료형을 지정해주어야 한다.

     

     

     

    자바스크립트는 동적 자료형(Dynamic) 언어이다. 

     

    그렇다면 자바스크립트가 동적 타입 언어라는걸 아는게 왜 중요할까?

     

    아래 예시를 살펴보자

     

     

     

     

    문자와 숫자의 사칙연산 예제

     

    var x=5+1

     

    이 코드에서 x=6이 될것이다

     

    var x = '5'+1

     

    하지만 위 같은 코드가 있을때, 다른 정적 타입 언어라면 문자열과 숫자를 더하니까 컴파일 에러가 발생한다

     

    그러나 자바스크립트는, 어떻게든 이를 연산하기 때문에 숫자 1 또한 문자열 '1'로 바꿔주고, '5'+'1'을 연산한다.

    최종적으로 x = 51 이 된다

     

    var x = '홍진호' * 2

     

     

    그럼 위 코드에서는 어떻게 될까?

    '홍진호' '홍진호' 이렇게 두 번 출력이 될까?

     

    답은 '아니오' 이다.

     

     

     

    Javascript는 덧셈 연산자의 경우, 문자형이나 숫자형으로 바꾸어 연산을 하지만, 

     

    나머지 연산자: 뺄셈, 곱셈, 나눗셈 연산자에서는 무조건 숫자형으로 바꿔 연산을 한다

     

     

    위 예시에서는 곱셈 연산자가 있으므로 문자형 데이터 '홍진호'숫자형으로 바꿔야 하는데, 그럴 수 없으니까 에러가 나고 NaN이 출력된다

     

     

    반응형
    댓글