Java script 16

빅오 표기법 (알고리즘 효율성)

빅오표기법 보통 알고리즘의 시간 복잡도와 공간 복잡도를 나타내는 용도로 주로 사용 시간과 공간 복잡도를 나타내는 방법으로는 점근 표기법이라고 해서 빅오(Big-O), 빅오메가(big-Ω), 빅세타(big-Θ) 표기법이 있다. 그런데 왜? 이 중에서 빅오표기법을 사용했을까? 알고리즘 효율성을 상한선 기준으로 표기해서이다. (상한선 : 알고리즘 효율성은 값이 클수록 즉, 그래프가 위로 향할수록 비효율적임을 의미한다.) 빅오메가는 하한선을 기준으로 하고, 빅세타는 상한선과 하한선의 사이를 기준으로 표기한다. 여기서 주의할 점은 빅오 표기법이 상한선만 지정했을 뿐 상한선이 꼭 알고리즘 효율성의 최악의 경우는 아니라는 것이다. 상수형을 무시한다. 빅오 표기법은 데이터 입력값(n)이 충분히 크다고 가정하고 있고, ..

Java script/개념 2022.12.23

<Optional chaining> 옵셔널체이닝

외부 api에서 데이터를 받아와서 데이터가 있는지 없는지 확인하고 데이터가 null 이거나 undefined 일 수 있기 때문에 데이터를 계속 확인해 주지 않는다면 TypeError를 만나게 되면서 옵셔널체이닝을 쓰게 되었고, 이에 대한 정확한 개념을 잘 모르는거 같아서 블로그를 작성하게 되었다. Optional Chaning은 ES2020에서 등장한 새로운 연산자 '?.'의 형태로 사용하며 체인으로 이루어진 각 참조가 유효한지 명시적으로 검증하지 않고 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있는 연산자이다. 체이닝 연산자와 비슷하게 동작하지만, 만약의 참조가 null 혹은 undefined여도 에러식을 뱉지 않고 undifined값을 리턴한다. 함수 호출시에도 마찬가지로 값이 없다면 ..

Java script/개념 2022.11.03

async / await

async async 함수는 fuction 앞에 위치합니다. 해당 함수는 항상 프라미스를 반환합니다. 프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스 (resolved promise)로 값을 감싸 이행된 프라미스가 반환되도록 합니다. HTML 삽입 미리보기할 수 없는 소스 = async가 붙은 함수는 반드시 프라미스를 반환하고, 프라미스가 아닌 것은 프라미스로 감싸 반환합니다. await (기다리다) await 은 async 함수 안에서만 동작합니다. HTML 삽입 미리보기할 수 없는 소스 함수를 호출하고, 함수 본문이 실행되는 도중에 잠시 '중단' 되었다가 프라미스가 처리되면 실행이 재개됩니다. 이때 프라미스 객체의 result 값이 변수 result에 할당됩니다. 따라서 위 예시를 실행하면 1..

Java script/개념 2022.10.25

기본타입 vs 참조타입

Java script를 하면서 이문제는 정말 꼭 집고 넘어가야 하는거 같다. 정말 기본중에 기본이라서 같이 꼭 집고 넘어가도록 하자 1. 기본 타입 (Primitive Type) 기본 데이터 타입은 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.\ 정수 타입 : byte, char, short, int, long 실수 타입 : float, double 논리 타입 : boolean 2. 참조 타입(Reference Type) 참조 타입이란 객체의 번지를 참조하는 타입이다. 배열, 열거, 클래스, 인터페이스 타입을 말한다. 기본 타입과 참조 타입의 차이는 저장되는 값이 무엇인가의 차이다. 기본 타입은 실제 값을 변수에 저장한다. 참조 타입은 배열, 열거, 클래스, 인터페이스를 이용해서 선언..

Java script/개념 2022.10.08

Java Script의 ES(ECMA Screapt)란?

자바스크립트는 언어이고, ES는 규격, 표준 죽 스펙이다. js는 10일이라는 정말 짧은 기간에 만들어진 언어이기 때문에 설계상의 미스가 있을 수 밖에 없다. 그렇기에 지속적으로 버전이 업그래이드 되면서 기능이 늘어 ES5,6 등이 생겨나게 되었다. 다음과 같이 살표 보자! ES5 (2009) ES4는 너무 급변하는 내용이 있었던지 거절되고, 바로 ES5가 나왔다. 배열 배열 배열과 관련해서 새로운 메소드들이 많이 생겼는데 대표적으로 forEach, map, filter, reduce, some, every와 같은 순환 메소드들이 생겼다. 이 메소드들은 개발자가 반복 횟수나 조건을 잘못 입력하는 등의 실수를 줄여주는 효과가 있다. 객체 일단 눈에 띄는 점은 객체의 프로퍼티에 대한 설정을 할 수 있다는 것..

Java script/개념 2022.10.02

함수 선언문 vs 함수 표현식

사실 함수 선언문과 함수 표현식은 실행하는 방식과 동장하는 방식도 동일해서 차이를 잘 느끼지 못합니다. 그럼 그 차이가 뭔지 살펴 보시죠 함수 선언문 어디서든 호출할 수 있습니다. 기본적으로 자바스크립트는 위에서 아래로 차례대로 한줄 씩 읽으면서 실행합니다. 이렇게 순차적으로 실행되고 즉시 반환하는 프로그래밍 언어를 인터프린터 언어라고 합니다. 그런데 이 코드는 실행이 됩니다. 왜 일까요? 이것은 자바 스크립트 내부 알고리즘 때문인데요 자바스크립트는 실행전 초기화 단계에서 코드의 모든 함수 선언문을 찾아서 생성해 둡니다. 그래서 우리가 보는 범위(ex. function 함수 안)와 다르게 사용가능한 범위가 굉장히 커지는데요 이것을 호이스팅(hoisting)이라고 합니다. 함수 표현식 코드에 도달하면 생성..

Java script/개념 2022.09.30

함수 (function)

※서비스를 만들다 보면 같거나 비슷한 동작들이 생기기 마련이죠? 팝업, 결재 등 이런 것들은 저장해서 재활용하는게 좋겠죠~ 함수는 이걸 가능하게 해주는데요 저희는 주로 console, alert, confirm을 씁니다! 그럼 다음 그림을 볼까요? 이 함수는 함수명 뒤에 괄호를 붙혀서 호출할 수 있습니다. 매개변수가 필요하다면 괄호 안에 넣어줍니다. ※ 함수의 매개변수(parameter)란 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다. 또한, 함수의 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 변수를 가리킵니다. 이렇게 들으면 이해되지 않을 수 있으니 매개변수가 있는 함수의 예를 들어 보자면 function sayHello(name){ con..

Java script/개념 2022.09.24