Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

melius

[JS] 문장과 표현식 본문

JavaScript

[JS] 문장과 표현식

melius102 2020. 1. 3. 09:42

https://2ality.com/2012/09/expressions-vs-statements.html

https://github.com/leonardomso/33-js-concepts

javascript-in-depth-all-you-need-to-know-about-expressions-statements-and-expression-statements

 

1. 표현식(Expression)

표현식은 반환값이 있고, 변수에 할당이 가능하다.

let a = 1 + 2;

함수 표현식(Function Expression), 함수호출(Function Call), 변수할당은 표현식이다.

let b = function () {};
let c = function () {}();
let d = c = a;

 

그룹 연산자((,)) 와 쉼표 연산자(,)

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Grouping

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Comma_Operator

소괄호(round bracket, 그룹 연산자)와 쉼표(comma, 쉼표 연산자)는 연산자이므로 표현식에만 사용가능

// (let a = 1;)		// SyntaxError: Statement
let b;
b = 1, 2, 3;
console.log(b);		// 1
// let c = 1, 2, 3;	// SyntaxError: Statement
let d = (1, 2, 3);
console.log(d);		// 3

let e = (function () {}(), function () {}, 4) - 1;

// function () {};	// SyntaxError
(function () {});
let f = function () {};

// function () {}();	// SyntaxError
(function () {})();
let g = function () {}();

 

2. 문장(Statement)

모든 표현식은 문장(Statement)이 될 수 있다(Expression Statement).

표현식이 아닌 문장은 변수에 할당할 수 없다.

let a = 1;
a;			// Expression Statement

// let c = if (true) a;	// SyntaxError
if (true) a;		// Statement

// let b = ();		// SyntaxError
// ();			// SyntaxError, () is not expression or statement.

 

블록문({,})과 세미콜론(;)

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/block

중괄호(curly bracket)는 문장 묶음(블록문)을 만들때 사용한다.

중괄호안에 표현식이 들어가면, 표현식이 아닌 문장으로 인식한다.

let a = {};		// Object Literal
// let b = {2};		// SyntaxError: Statement
{2};			// Statement

세미콜론은 문장을 구분하는 문자로서 표현식에 넣으면 표현식이 아닌 문장으로 인식한다.

// let a = {;}; 	// SyntaxError, {;} is statement.
{;}	            	// NoError, {;} is statement.
{if (true) console.log('statement');}

// let c = (1;, 2);	// SyntaxError

let a = {} + 1;		// String operator: Object + number
let b = {} - 2;		// NaN: Object - number
// let c = {;} + 1;	// SyntaxError: Statement
{;} + 1;		// Statement

 

* 구분법

소괄호에 넣을 수 있거나, 변수에 할당이 가능하면 표현식이다.

세미콜론(;)을 붙혀서 단독으로 실행가능하면 문장이다.

둘다 아니면 잘못된 문장이다.

 

'JavaScript' 카테고리의 다른 글

[JS] Array, Set, Map  (0) 2020.01.08
[JS] 실행문맥과 클로저  (0) 2020.01.07
[JS] 프로토타입  (0) 2020.01.01
[JS] this  (0) 2020.01.01
[JS] 함수  (0) 2019.12.30
Comments