JavaScript

표현식과 문/ 데이터 타입/연산자

Hun-bot 2022. 4. 25. 02:21
728x90
반응형

-값 : 표현식이 평가되어 생성된 결과를 말한다.

ex) 3+7 이라는 식이 평가되어 10이라는 결과를 생성한것.

 

-리터럴: 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법.

ex) 정수 리터럴 : 100 , null 리터럴 : null 등

 

-표현식: 값으로 평가될 수 있는 문(statement)이다. 

ex) var today=60; 

 

-문: [statement] 프로그램을 구성하는 기본 단위이자 최소 실행 단위.

-토큰(Token): 문법적인 의미를 가지며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소

ex) var pig=60+20 ; 이라는 '문'이 있을때 토큰은 var, pig, = , 60 , + , 20, ; 이다.

 

표현식과 문 구분법

//표현식이 아닌 문
var k;

//할당문 -> 표현식인 문
k=10;

값처럼 사용 가능하냐 아니냐에 따라서 나뉜다고 보면된다.


데이터 타입

1. 자바스크립트는 하나의 숫자 타입만 존재하며, 모든 수를 실수로 처리한다.

2. 숫자 타입은 3가지의 특별한 값을 표현할수있다.

-Infinity : 양의 무한대 / -Infinity: 음의 무한대 / NaN: 산술 연산 불가 (대소문자 구별)

3.템플릿 리터럴(백틱 ` )은 줄바꿈이 허용된다.(일반 따옴표는 불가)

ex) var hi=`안녕하세요

반갑습니다.`

${}을 통해 표현식을 삽입 할수도 있다.

4. undefined / null(값이 없다는것을 명시하고 싶을 때)

5.심벌 타입 (Symbol) - 다른 값과 절대 중복되지 않는 값 -> 그렇기에 프로퍼티의 키로 활용한다.

var hi=Symbol('hi');

var obj={};
obj[hi]='hello'

-데이터 타입이 있는 이유?

1. 메모리 공간의 크기 결정 -> 값을 저장할때 확보 / 값을 참조할 때 읽음

2. 2진수를 어떻게 해석할지 결정하기위해서

->0100 0001을 숫자로 해석하면 '65' 문자로는 'A'이다. 데이터 타입이 없으면 컴퓨터는 뭘로 해석해야할지 모른다.

 

동적 타이핑 / 정적 타이핑

아주 간단한 이야기다.

 

C언어를 떠올려보자 char b; int k; 이런식으로 type을 정해주면 변수자리에는 해당 데이터 타입만 올 수 있다. ( 정적 )

 

자바스크립트는 var k=(여기에 오는 형태에 따라) 즉, 할당에 따라서 타입이 결정된다 ( 동적 )


연산자

* 숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용할면 피연산자를 숫자 타입으로 변환하여 반환한다. (-도 가능)

var hi='2'

log(+hi) // 2

log(hi) // '2'

*할당 연산자

var t;

log(t=1)
//1 출력

할당문은 할당된 값으로 평가함 -> 이런 구조 때문에 
var a,b,c

a=b=c=0

log(a,b,c) // 0, 0, 0 

이런것도 가능하다.

*비교 연산자/삼항 연산자

 

NaN=== NaN //false -> 숫자가 NaN인지 알고싶으면 isNaN을 사용해라

0 === -0 //true
0 == -0 //true
Object.is 메서드 사용 (정확한 비교)
Object.is(-0,+0) //false


{!isGood ? "yes" : "no"} //아주 간단한 삼항연산자고 React할때 많이 사용하게 된다.

 

*연산자 우선순위(2018버전)

다를수도 있다.

 

 

 

[참조]

https://jstutorial.medium.com/javascript-operator-precedence-and-associativity-table-71ee154079c

 

JavaScript Operator Precedence and Associativity Table

Operators with precedence of 0 are evaluated last in order.

jstutorial.medium.com

 

728x90
반응형