Statement(문)과 Expression(식)의 차이 및 Javascript/Python으로 확장

개발파이어·2024년 12월 2일

언어 통찰

목록 보기
1/2
post-thumbnail

목차

질문지 작성

  1. statement(문)과 expression(식)의 정의를 설명하시오.
  2. javascript의 arrow function은 왜 this가 없는지 설명하시오.
  3. javascript의 일급 함수를 값과 연관 시켜 설명하시오.
  4. javascript의 내부 함수 선언식을 return하면 어떤 결과가 나는지 설명하시오.
  5. python에서 특정 문을 식으로 사용하는 연산자를 설명하시오.

Statement(문) 정의

Statement(문)의 사전적 정의[위키피디아]

요약: statement(문)은 프로그램을 실행하는 독립적인 단위입니다.

코드 예제 문

let thisStatement = 10; // simple statement(단순문), 변수 선언
thisStatement += 10; // simple statement(단순문), 값 증가

if (thisStatement > 10){ // computed statement(복합문), 식과 단순문의 조합
  console.log('복합문이다!) 
}

function computedFunction(){ // // computed statement(복합문), 함수 선언문은 문으로 해석
	const a = 1;
    const b = 2;
}
              

Expression(식) 정의

Expression(식)의 사전적 정의[위키피디아]

요약: expression(식)은 값으로 평가되는 코드입니다.

코드 예제

11 + 11 // 연산자는 식으로 평가
returnNumFunction(); // 함수 호출 또한 값을 반환하기에 식으로 평가

Javascript의 식과 문

javascript에서 사용되는 식과 문 중에서 특이사항을 정리하였습니다.

Arrow Function
함수의 선언문과 다르게 식으로 사용되기에 변수 할당을 하지 않고 단독으로 사용하면 의미가 없습니다

(a,b) => a+b // 식이기에 독릭적인 단위가 아니여서 선언문에 포함되어야 합니다.
  • arrow function은 간단한 콜백 함수나 표현식을 위한 슈가 코드로, 함수 내부에 this를 생성하지 않고, 상위 스코프의 this에 상속됩니다. (스코프는 다른 게시물 참조)

삼항 연산자

x > 1 ? true : false // 식, 삼항연산자는 if else를 대신해 3개의 피 연산자로 실행되는 연산자입니다.
x > 1 ? console.log('true') : console.log('false) // 반환값이 표현식이어도 결국 값을 반환하니 식
  • 삼상 연산자는 식이지만 이는 참조 투명성의 부작용이 발생하는 부분입니다. (물론 현실적으로 부작용은 당연한것이기에 잘못되었다고는 할 수 없다고 생각합니다.)
  • 참조 투명성이란, 동일한 값을 입력 시, 항상 동일한 결과를 반환하는 성질입니다.
    - 참조 투명성의 부작용이란, 동일한 값을 반환하지 않거나 값을 대신에 동작을 실행하는 행위를 일컫습니다.

일급 함수와 값의 연결고리

일급 함수의 사전적 정의[MDN]

요약: 함수를 값으로 사용이 가능해, 변수 할당, 인자로 값 전달, 반환값 사용, 데이터 구조에 저장이 가능합니다.

코드 예제

function firstLevel(numbers){
  /*
  * 내부 return을 함수 선언식으로 작성해도,
  * 함수 표현식으로 인식됩니다. 
  */
	return secondLevel(times){
    	return numbers * times
    }
}
  • 함수 표현식은 const a = function(){}의 형태로 값으로 취급됩니다.

Python의 식과 문

javascript과 거의 유사하지만 일부 문법적으로 python만의 특이사항을 정리 했습니다.

if else 조건부 표현식

x = if True: 5 # 이건 문이기에 에러가 발생합니다. 등호 연산자 우측은 값이 와야 합니다.
x = 5 if True else 3 # 조건부 표현식으로 javascript 삼항 연산자의 위치가 유사합니다.

람다

sum = lambda a,b: a+b # lambda는 일종의 익명 함수로 표현식으로 사용 가능합니다.

월러스 연산자

if (n:= len([1,2,3,4])) > 3:
	print(n) # n은 4로 할당 받습니다.
  • := 연산자로 특정 문을 식처럼 사용할 수 있어, 문을 변수 할당과 식으로 통합 사용 가능한 슈가 연산자입니다.
profile
안녕하세요

0개의 댓글