Language 25

[JavaScript] callback function

call(부르다) + back(되돌아오다) 콜백함수 : 다른코드의 인자(매개변수)로 넘겨 주는 함수 콜백함수를 넘겨 받은 함수가 콜백함수를 언제쓸지 알아서 정하니 제어권을 넘겨줬다고 한다. 호출의 제어권 let count = 0; let cbFunc = function(){ console.log(count); if(++count>4) { clearInterval(timer); } } let timer = setInterval(cbFunc,300); setInterval에게 인자로 cbFunc를 전달해 주었다. (그러니까 cbFunc는 콜백함수) cbFunc를 직접 호출 하지 않고 setInterval이 cbFunc를 호출 시켜줬다. 인자 제어권 // let arr = [1,2,3,4,5].map(func..

Language/javascript 2023.10.19

[JavaScript] this, call, apply, bind

this 따로 지정해주지 않으면 지금의 실행 컨텍스트가 활성화된 객체를 바라본다고 볼 수 있을것같다. 전역 환경에서의 this는 node환경에선 global객체, 브라우저 환경에서는 window객체이다. 함수와 메서드 함수는 전역에서 선언되어 어디서든 호출 가능 함수의 this는 전역 객체 // 호출 방법 함수(); 메서드는 자신을 가진 객체를 통해 호출 해야함 메서드의 this는 호출의 주체 // 호출 방법 객체.메서드(); var o1 = { outer: function() { // this는 o1 console.log(this); var innerfunc = function() { console.log(this); // this는 global } innerfunc(); var o2 = { inner..

Language/javascript 2023.10.17

[JavaScript] 실행 컨텍스트 Execution Context

혼잣말 많음 주의 실행 컨텍스트 : 실행 할 코드에 제공 할 환경 정보들을 모아 놓은 객체 실행 컨텍스트는 프로그램에서 어떤 문단이 실행될 상황마다 일어난다고 보면 될듯?! 문단이 실행되려면 실행되는 실행문에 대해서 정보를 셋팅 해 놓은 것이 실행 컨텍스트 인듯? 실행 컨텍스트가 활성화되는 시점에서 일어나는 일들 Variable Environment Lexcial Environment ThisBinding Variable Environment 현재 컨택스트를 만들면서 윗단 컨텍스트(외부 컨택스트)의 식별자 정보(recode)와 외부 환경 정보(outerEnvironmentReference )를 가진다. Variable Environment 기반으로 다음 Lexcial Environment를 생성 Lexc..

Language/javascript 2023.10.16

[JavaScript] 호이스팅 hoisting

다른 게시글에도 정리했지만 한번 더... Scope 변수에 영향력을 행사하는 범위이다. 지역변수, 전역변수를 예로 들수 있다. 전역 스코프(Global Scope)는 전역에 선언되어있어 어느 곳에서든지 해당 변수에 접근할 수 있다. 지역 스코프(Local Scope)는 해당 지역에서만 접근할 수 있다. Hoisting 호이스팅이란 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성을 말한다. 문단 아랫단에 변수를 선언을 하여도 문단 가장위에 선언된것으로 간주, 선언했던 구간에서는 값을 할당한 것으로 읽는다. 호이스팅의 예시 console.log(a); var a = 2; console.log(a); 선언하지 않은 것을 호출하면 에러가 나면서 프로그램이 동작하지 못하는데, 첫 console..

Language/javascript 2023.10.16

[JavaScript] 얕은 복사(shallow copy)와 깊은 복사(deep copy)

object들은 생성할때 각각 다른 주소값에 생성이 된다. 그래서 안의 내용이 같아도 다른 객체로 간주한다. 얕은 복사 shallow copy 얕은 복사는 객체를 복사 할때 참조하는 주소까지 복사가 되는 것을 말한다. var obj1 = {} var obj2 = {}; console.log(obj1 === obj2); obj1 = obj2; console.log(obj1 === obj2); 두 객체를 생성하였을 때 둘은 다른 객체 였는데, obj1에 obj2를 할당 하니 둘은 같은 객체가 되어버렸다. 객체 안의 내용까지 확인 해보자. var obj1 = {a:10} var obj2 = {b:20}; console.log(obj1 , obj2); console.log(obj1 === obj2); obj1 ..

Language/javascript 2023.10.16

[JavaScript] 데이터 타입 기본형과 참조형

데이터 타입은 기본형과 참조형으로 나뉜다. (symbol은 뭐냐 나중에 수정) 기본형 (Primitive Type) number string boolean null undefined 참조형 (Reference Type) object 배열, Map, Set, Date 등 typeof를 통해 object로 나오는 것들이 참조형이다. 함수는 function으로 나오지만.. 참조형이다. 기본형과 참조형의 차이점으로는 값의 저장 방식과 불변성의 여부가 있다. 데이터가 저장된 주소를 가리키는 포인터 등을 알고 설명을 해야하는데... 우선은 동작 결과를 가지고 비교만 해보겠다. 기본형 number 타입의 할당예제 var num1 = 1; var num2 = 3; console.log(num1,num2); num1 =..

Language/javascript 2023.10.15

[JavaScript] Class / get, set, 상속

class es6에서 도입됨. 클래스는 생성자를 가지고 있고 상속 기능을 가지고 있다. class 생성 class Person { constructor() { // 생성자 console.log("생성"); } } var myClass = new Person(); 생성자안에 매개변수를 넣어서 클래스 생성하기 class Person { constructor(name,age) { this.name = name; this.age = age; } info() { console.log(`이름 : ${this.name} 나이 ${this.age}`); } } var myClass = new Person("이름",10); myClass.info(); 생성자에 필요한 매개변수를 넣지 않으면 undfined가 할당된다. ..

Language/javascript 2023.10.15

[C/C++] 프로그램 실행 순서

소스파일 -> 선행처리기 -> 선행처리거친소스파일 -> 컴파일러 -> 오브젝트 파일 -> 링커 -> 실행파일 전처리기 : 소스코드나 헤더에 선언된 매크로함수, #define #include 등 전처리문(#붙은거)을 다 포함한 내용을 일괄적으로 만듬 문법(syntax error) 검사 ​ 컴파일 : 전처리 단계에 생성된 내용을 어셈블리어로 된 파일로 생성 ​ 어셈블러 : 어셈블리어를 기계어로 번역. 오브젝트 파일 생성 ​ 링커 : 오브젝트파일과 사용하는 라이브러리들을 연결하여 실행파일 만듬

Language/c c++ 2023.10.14

[JavaScript] Map, Set

Map key , value 페어로 저장 key에 어떤 데이터 타입도 넣을 수 있다. key가 정렬된 순서로 저장 key 중복 안됨. Map 생성 var myMap = new Map(); Map 안에 내용 추가 myMap.set('one',1); myMap.set('two',3); myMap.set('two',2); // 같은 key 값은 내용을 덮어 씌움 console.log(myMap); Map안의 내용 console.log("key 배열로 출력", myMap.keys()); console.log("value 배열로 출력", myMap.values()); console.log("entrie 배열로 출력", myMap.entries()); iterator 로 출력됨. ( 순회 가능 ) Map안의 내용 ..

Language/javascript 2023.10.14