melius
[JS] 문장과 표현식 본문
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 |