언어&프레임워크/JavaScript

function, object(JavaScript)

밍풀 2023. 5. 5. 00:58

function

 

자바스크립트의 클래스는 프로토타입으로 가짜 object oriented임

 

자바스크립트는 프로시저언어(절차적언어)이며 함수가 프로그램에서 중요한 기능 담당

 

자바스크립트에 클래스가 추가되긴 했지만 프로토타입을 베이스로 한 오브젝트인 가짜임

 

sub-program 이라고도 하며 프로그램에서 각각의 작은 기능을 담당함

 

파라미터를 받아 처리한다음 아웃풋 리턴함

 

api, 언어자체에 존재하는 함수를 쓸때

함수의 이름을 보고 하는일 예측가능해야 함

 

여러번 재사용 가능

한가지의 일이나 값을 계산하기 위해 사용

 

동사형태로 이름 정하기

하나의 함수는 하나의 일만 해아함

 

자바스크립트에서 함수는 오브젝트임

그래서 함수를 변수에 할당할수있고 파라미터도 가능하고 리턴할수도 있음

 

자바스크립트는 변수타입을 지정하지 않기때문에

함수에서 파라미터를 전달할때 어떤 타입을 전달해야 할지 명확하지 않다는 단점이 있음

 

위와 같이 타입스크립트에서는 타입을 써줘야함

 

파라미터

원시타입 경우 메모리에 벨류 그대로 저장되어있기에 그대로

오프젝트는 레퍼런스 전달

 

 

message by undefinded 출력

함수에서 파라미터가 두개로 정의되어있는데 

호출할때 파라미터 하나만 전달되면 전달되지 않은 부분만 undefinded 로 출력 됨

 

과거에는

if문에 따로 작성해야 함

 

rest parameters ( ...args)

  dream coding ellie가 배열형태로 인자로 전달됨

간단하게 of 로 가능

forEach 로도 가능

 

local scope

전역변수는 { } (스코프)에서 접근 가능하지만

로컬변수는 스코프내에서만 접근 가능

함수도 마찬가지로 printanother은 밖에선 호출불가

printanother함수 내 childmessage 도 그 함수 밖 출력 불가

 

return

return값이 없으면 return undefinded ; 가 있는것과 같고 생략가능

 

early return, early exit

조건이 맞을 때 뭘 한다기보다 조건이 맞지 않을때 빨리 리턴 해서 함수 종료하도록 한느것이 더 좋음 

조건이 맞지 않는 경우, 값이 undefinded, -1 빨리 리턴하는것이 효율적

 

function expression

함수가 1. 변수에 할당가능 2. 함수의 파라미터로도 가능 3.return 값으로도 가능

함수의 이름이 없는 채로 변수에 할당 ; anonymous function

이름 있는 채로도 할당이 가능하다 named functinon

printAgain() 호출해도 print

 

자바스크립트에서 함수가 선언되면 hosting이 되기 때문에 (var가 그랬던것 처럼 함수가 맨 위로 올라가는꼴)

선언된곳 위에서 호출하더라도 정상적으로 호출됨

그러나 print와 같이 할당하는 경우는 위에서 호출 불가 

 

callback function

printYes, printNo 두가지 콜백함수가 파라미터로 전달

변수에 함수를 할당할때 위와같이 printNo에서 함수이름을 print와 같이 정하는경우

디버깅의 이유, 그리고 함수 내에서 자신 스스로 또다른 함수를 호출할때이다.

함수안에서 자기 스스로를 부르는 것 = recursion

위와 같은 경우 계속해서 no!가 출력됨

recursion은 피보나치, 평균 값 등 에서 사용

 

arrow function

함수를 간결하게 만듦

 

블럭없이 쓸수있고 쓴다면 return을 써야함

 

iife

함수를 선언하면 호출따로 해줘야 함

 

 근데 위와 같이 바로 () 묶은 다음 호출하듯 사용도 가능함