본문 바로가기

전체 글38

Ch.12 함수 함수 호이스팅 console.log(add(2,5)) // 7 console.log(sub(2,5)) // 타입에러 function add(x, y) { //함수 선언문 return x + y; } var sub = function(x, y) { //함수 표현식 return x + y; } 함수 선언문으로 정의한 함수는 선언문 이전에 호출 할 수 있지만 함수 표현식으로 정의한 함수는 호출이 불가하다. 이는 함수 선언문과 함수 표현식의 생성시점이 다르기 때문이다. 왜나하면 함수 선언문은 함수를 호이스팅하여 암묵적으로 생성된 식별자를 undefined가 아닌 함수로 초기화 하는 함수 호이스팅을 실행하며. 함수 표현식은 변수를 호이스팅 후 undefined로 초기화 하는 변수 호이스팅을 실행하기 때문이다. 함.. 2022. 10. 8.
[알고리즘] 정렬 알고리즘 정렬 알고리즘은 값들을 일정한 순서로 열거하는 알고리즘을 말한다. 데이터 탐색 시 정렬된 데이터 집합은 탐색을 훨씬 효율적으로 만든다. 선택정렬 선택정렬은 데이터들 중 현재 위치에 맞는 데이터를 선택하여 현재 위치와 교환한다. 선택정렬은 데이터의 전체를 순회하기 때문에 모두 O(n^2)의 시간 복잡도를 가진다. 버블정렬 버블 정렬은 인접한 두개의 요소를 비교해가면서 정렬한다. 한번 돌때마다 마지막 요소가 정렬되는데 이에 따라 버블 정렬이라고 한다. 일반적으로 성능은 떨어지지만 이미 정렬된 데이터에서는 최고의 성능을 보여준다. 버블정렬은 데이터의 전체를 순회하기 때문에 O(n^2)의 시간 복잡도를 가지지만 정렬된 데이터에서는 O(n)이 된다. 삽입정렬 삽입 정렬은 선택된 값을 앞에서부터 현재 위치까지 차례.. 2022. 10. 8.
Ch.10 객체 리터럴 자바스크립트는 객체 기반 프로그래밍 언어이다. 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다. 원시타입의 값은 변경 불가능한 값(immutable)이지만 객체는 변경 가능한 값(mutable)값이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 프로퍼티의 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부른다. 객체 리터럴에 의한 객체 생성 C++나 자바 같은 클래스 기반 객체 지향 언어는 클래스를 사전에 정의하고 필요한 시점에 new 연산자와 함께 생성자를 호출하여 인스턴스를 생성한다. 자바스크립트는 프로토타입 기반 객체지향 언어로서 클래스 기반 객체지향 언어와는 달리 다양한 객체 생성방법을 지원한다. -객체 리터럴 -Object 생.. 2022. 10. 7.
Ch.7 연산자 연산자는 하나 이상의 표현식을 대상으로 산술,할당,비교,논리,타입,지수 연산 등을 수행해 값을 만든다. 산술 연산자 산술 연산자는 피연산자를 대상으로 수학적 계산을 실행하며, 계산이 불가능하면 NaN을 반환한다. 이항 산술 연산자 2개의 피연산자를 산술하는 일반적인 연산자(+, - 등) 단항 산술 연산자 1개의 피연산자를 산술하는 연산자(++,-- 등) 단항산술 연산자는 피연산자의 값을 변경하는 부수효과가 있다. 위치에 따라 전위/후위가 결정된다. +는 부수효과가 없지만 문자열에 적용시 NUMBER 타입으로 전환한다. 문자열 연산자 +연산자는 문자열 또한 연결 가능하며 숫자 타입과 문자열을 연결시 데이터 타입을 문자열로 반환한다. 이를 암묵적 타입 변환 또는 타입 강제 변환이라고 한다. 할당 연산자 할당.. 2022. 10. 7.