[ Expression]
: 하나의 값을 결과로 가지는 javascript code snippet
- primary expression
this, indenitifier, literal
-
this : evaluates to this value of the execution context - p36
-
literal - NullLiteral(null), BooleanLiteral(false, true), NumbericLiteral, StringLiteral
2. new expression
ex) new newExpression
- 1. evaluate newexpression
- 2. call getValue(Result(1))
- 3. if type(result2) is not object, generater a runtime errror
- 4. if result2 does not emplement the internal construct method, generate a reuntime error.
- 5. call the construct method on result2, providing no arguments
- 6.if type(result5) is not object, generate a runtime error
- 7.return result 5;
3. function expression - function call
4. unary expression (연산자 식)
: 연산자가 존재하는 경우, 하나의 결과값을 도출
[ Statement ]
=> 인터프리터에게 내리는 지시문
-
statement 가 파생된 이후에 값을 남기지 않음
-
종류
: 메모리에서의 생성
ex) class, structure
: 흐름제어
-
조건 분기와 반복처리
ex) if, switch, for, while….
- variable statement
ex) var [variableDeclarationLIst]
variable initializer
ex) = [assignmentexpression]
2. empty statement
ex) ; (+) expression; - > expression satatement
3. if statement
ex) if(expression) statement else statement
if(expression) statement
-1. evaluate expression
-2. call getValue(result(1))
-3. call toboolean(result(2))
-4. if result(3) is false, return ‘normal completion”
-5. evaluate statement.
-6. return result(5)
4. iteration stataement
while(expression) statement, for(Expression;expression;expression) statement
for(lefthandsideexpressoin in expression) statement
for (Var indeifiier initializer in expression) statement
5. with statement
with(object) statement; - 속성들을 바로 접근 가능함
-
해당 객체를 scope chain에 새로 넣음() -> 추가적인 자원 소모
6. function definition
function indetifier (formalParameterList) block
- 1.create a new function obejct with parameter specified by the formalparameterlist, the block as the body , and identifier as its name;
-2. put his new function object as the new value of the property named identifier in the global object or the activation object, as appropriate - p56
7. return statement;
++
//function expression
javascirpt에서 function은 first-class-object라고 하는데, 이는
변수를 저장, 함수의 파라미터로 전달가능, 함수의 반환값으로 사용가능, 자료구조에 저장 가능한 객체를 언급하는 말이다.
: function literal로, 특정 변수에 할당되거나 즉시 실행가능한 코드 블럭으로서 존재하는 함수를 의미
=> function declaration 을 실행코드로 해석하기 위해서는 ()를 이용 -
> 자기 호출함수 (self invoking function) : 해석과 동시에 실행하는 함수
: named function expression
=> 특징 : 해당 함수의 이름을 함수밖에서 사용x
//=> 호이스팅이 발생하지 않도록, 사용