표현식과 문/ 데이터 타입/연산자
-값 : 표현식이 평가되어 생성된 결과를 말한다.
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