Skip to content

Latest commit

 

History

History
128 lines (111 loc) · 3.54 KB

05표현식과 문.md

File metadata and controls

128 lines (111 loc) · 3.54 KB

[5장] 표현식과 문

5.1 값(value)

  • 값은 식(표현식,expression)이 평가(evaluate)되어 생성된 결과를 뜻한다.
  • 평가란, 식을 해석해서 값을 생성하거나 참조하는 것을 뜻한다.

[05-01]

// 10+20은 평가되어 숫자 값 30을 생성한다
10 + 20; //30 

5.2 리터럴(literal)

  • 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)을 말한다.
  • 자바스크립트 엔진은 런타임에 리터럴으르 평가해 값을 생성한다.
  • 리터럴은 값을 생성하기 위해 미리 약속한 표기법이다.
  • 리터럴을 사용하여 다양한 데이터 타입을 생성할 수 있다.

5.3 표현식

  • 표현식(expression)은 값으로 평가될 수 있는 문(statement)이다.
  • 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.

[05-04]

var score = 100;

리터럴 100은 그 자체로 표현식이다.

[05-05]

var score = 50 + 50;

50 + 50은 리터럴과 연산자로 되어있고, 평가되어 100을 생성하므로 표현식이다.

[05-06]

score; //100

식별자 참조는 값으로 평가되므로 표현식이다.

[05-07]

//리터럴 표현식
10
'hello'

//식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.name
arr[1]

//연산자 표현식
10+20
sum = 10
sum != 10

//함수/메서드 호출 표현식(선언이 이미 존재한다고 가정)
square()
person.getName()

5.4 문(statement)

  • 프로그램을 구성하는 기본 단위이자 최소 실행 단위
  • 명령문 이라고도 부른다.
  • 문의 기본요소 : 토큰
  • 토큰: 키워드, 식별자, 연산자, 리터럴 등 문법적 의미를 가지며 문법적으로 더이상 나눌 수 없는 코드의 기본 요소
  • 선언문, 할당문, 조건문, 반목문 등
//변수 선언문
var x;

//할당문
x =5;

// 함수 선언문
function foo(){}

//조건문
if (x>1) {
    console.log(x);
}

//반복문
for (var =0; i<2; i++){
    console.log(i);
}

5.5 세미콜론과 세미콜론 자동 삽입 기능

  • 문의 종료를 나타내는 ;(세미콜콜론)
  • 단, 코드블록({...}) 뒤에는 세미콜론을 붙이지 않는다. 코드블록이 가지는 자체종결성 때문.
  • 세미콜론은 생략 가능
  • 자바스크립트 엔진이 '세미콜론 자동 삽입 기능(ASI)'을 가지고 있기 때문이다.
  • 그러나 그 동작과 개발자의 예측이 일치하지 않는 경우가 있음
  • 세미콜론 사용을 권장

5.6 표현식인 문과 표현식이 아닌 문

  • 표현식인 문: 값으로 평가될 수 있는 문
  • 표현식이 아닌 문: 값으로 평가될 수 없는 문 => 구별 방법: 변수에 할당해보는 것

[05-12]

//변수 선언문, 표현식이 아님
var x;

//할당문
//1,2,1+2,x=1+2 모두 평가될 수 있으므로 표현식
x= 1+2;

[05-13]

var foo = var x; // SyntanxError

표현식이 아닌 문은 값(변수 선언문)처럼 사용될 수 없다.

[05-13,14]

var x;
x= 100;
var foo = x= 100;
console.log(foo); //100

할당문은 표현식이므로 값으로 평가된다. 그러므로 할당문을 값처럼 변수에 할당할 수 있다.

⚠ 완료 값(completion value)

  • 크롬 개발자 도구에서, 표현식이 아닌 문을 실행하면 언제나 undefined를 출력한다.
  • 완료값인 undefined는 표현식의 평과 결과가 아니므로 다른 값과 같이 변수에 할당할 수 없고 참조할 수도 없다.