본문 바로가기

분류 전체보기57

[JS] 호이스팅에 대해서 설명해보세요. 변수 호이스팅(Variable Hoisting) 다른 C-family 언어와는 차별되는 자바스크립트의 특징으로 모든 선언문은 호이스팅(Hoisting)되기 때문이다. 호이스팅이란 var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성을 말한다. 즉, 자바스크립트는 모든 선언문(var, let, const, function, function*, class)이 선언되기 이전에 참조 가능하다. 변수가 어떻게 생성되며 호이스팅은 어떻게 이루어지는지 좀더 자세히 살펴보자. 변수는 3단계에 걸쳐 생성된다. 자세한 내용은 Execution Context을 참조하기 바란다. **선언 단계(Declaration phase)**변수 객체(Variable Object.. 2023. 5. 3.
[JS]참조형 데이터에 대해서 설명해보세요. 참조형 데이터 object type을 객체 타입 또는 참조 타입이라 한다. 참조 타입이란 객체의 모든 연산이 실제값이 아닌 참조값으로 처리됨을 의미한다. 원시 타입은 값이 한번 정해지면 변경할 수 없지만(immutable), 객체는 프로퍼티를 변경, 추가, 삭제가 가능하므로 변경 가능(mutable)한 값이라 할 수 있다. 따라서 객체 타입은 동적으로 변화할 수 있으므로 어느 정도의 메모리 공간을 확보해야 하는지 예측할 수 없기 때문에 런타임에 메모리 공간을 확보하고 메모리의 힙 영역(Heap Segment)에 저장된다. 이에 반해 원시 타입은 값(value)으로 전달된다. 즉, 복사되어 전달된다. 이를 pass-by-value라 한다. // Pass-by-reference var foo = { val:.. 2023. 5. 3.
[JS] 얕은 복사와 깊은 복사에 대해서 설명해보세요. 데이터 타입 원시타입 : 변수에 주소 할당, 값을 재할당 하는 것은 메모리에서 데이터를 바꾸는 것이 아니라 메모리 주소를 바꿈 그래서 원시타입 데이터는 불변성을 가짐 객체타입 : 프로퍼티 키와 프로퍼티 값이 각각 메모리 주소로 메모리에 저장되어 있고 그 메모리 주소로 가면 프로퍼티 키에 대한 메모리 주소가 또 있음 그래서 중간 주소를 변경하면 값이 변경됨 그래서 참조형 데이터라 불리고 변경이 가능함 객체타입에서 복사 얕은 복사 바로 아래 단계 값만 복사 중첩된 객체에서 참조형 데이터가 저장된 프로퍼티를 복사할 때 그 주솟값만 복사한다는 의미 즉, 사본을 바꾸면 원본도 바뀜 깊은 복사 내부의 모든 값들을 하나하나 찾아서 전부 복사하는 방법 깊은 복사를 수행하는 함수 let copyObjectDeep = f.. 2023. 5. 2.
[JS] Undefined와 null의 차이점이 무엇인가요? 1. null null 값은 일반적으로 존재하지 않거나 유효하지 않은 object 또는 주소를 의도적으로 가리키는 참조를 나타냅니다. 모든 객체는 null 값으로 부터 파생되며 따라서 typeof 연산자는 아래의 코드에서 object를 반환합니다. typeof null === 'object' // true //null 타입을 확인할 때 일치 연산자(===)를 사용해야 함 var foo = 'Lee'; foo = null; // 참조 정보가 제거됨 //또는 함수 호출시 유효한 값을 반환할 수 없는 경우에 명시적으로 반환함 2. undefined undefined는 원시값으로, 선언한 후 값을 할당하지 않은 변수 혹은 값이 주어지지 않은 인수에 자동으로 할당됩니다. 객체 내부에 존재하지 않는 프로퍼티에 접근.. 2023. 5. 2.
[JS] Var, let, const의 차이에 대해서 설명하고, 호이스팅에 대해서 설명해보세요. 1. 변수 선언 방식 우선, var는 변수 선언 방식에 있어서 큰 단점을 가지고 있다. var name = 'bathingape' console.log(name) // bathingape var name = 'javascript' console.log(name) // javascript 변수를 한 번 더 선언했음에도 불구하고, 에러가 나오지 않고 각기 다른 값이 출력되는 것을 볼 수 있다. 이는 유연한 변수 선언으로 간단한 테스트에는 편리 할 수 있겠으나, 코드량이 많아 진다면 어디에서 어떻게 사용 될지도 파악하기 힘들뿐더러 값이 바뀔 우려가 있다. 그래서 ES6 이후, 이를 보완하기 위해 추가 된 변수 선언 방식이 let 과 const 이다. 위의 코드에서 변수 선언 방식만 바꿔보면 let name =.. 2023. 5. 2.
4주차 개발일지 앱개발 1. 앱과 서버 앱에 모든 데이터를 담을 순 없습니다. 1) 앱 용량이 커질 수도 있고 2) 앱 개발자가 새로운 데이터를 사용자에게 제공하려면, 새로운 데이터를 담아 다시 배포해야 겠죠? 그래서 데이터가 담긴 곳, 즉 서버라 부를 곳을 배우고 앱에서 서버의 데이터를 가져오고 변경하는 방법에 대해 배웁니다. 2. 서버리스 서버를 만드는 일은 쉬운일이 아닙니다. 이 서버를 대신 만들어놓고 필요한 기능, 1) 데이터 생성 2) 데이터 조회 3) 데이터 삭제/수정 등을 제공해주는 서비스들이 존재합니다. 이를 서버리스라고 부르기도 하는데요! 이에 대해 배웁니다 3. 파이어베이스 👉 파이어베이스는 구글에서 만든 서버리스 서비스입니다. 서버에 대한 지식이 그렇게 깊지 않아도 서버적인 기능들을 사용할 수 있게끔.. 2022. 11. 25.
3주차 개발일지 웹개발 1. 파이썬 기초문법 1) 변수 & 기본연산 a = 3 # 3을 a에 넣는다 b = a # a를 b에 넣는다 a = a + 1 # a+1을 다시 a에 넣는다 num1 = a*b # a*b의 값을 num1이라는 변수에 넣는다 num2 = 99 # 99의 값을 num2이라는 변수에 넣는다 # 변수의 이름은 마음대로 지을 수 있음! # 진짜 "마음대로" 짓는 게 좋을까? var1, var2 이렇게? 2) 자료형 - 숫자, 문자형 name = 'bob' # 변수에는 문자열이 들어갈 수도 있고, num = 12 # 숫자가 들어갈 수도 있고, is_number = True # True 또는 False -> "Boolean"형이 들어갈 수도 있습니다. ######### # 그리고 List, Dictionary.. 2022. 11. 22.
2주차 개발일지 웹개발 1. jquery 임포트 하기 " target="_blank" rel="noopener">https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> 2. jquery 사용하기 css와 마찬가지로, jQuery를 쓸 때에도 "가리켜야" → 조작할 수 있습니다. 예) 특정 인풋박스의 값을 → 가져와줘! 예) 특정 div를 → 안보이게 해줘! css에서는 선택자로 class를 썼지요? jQuery에서는 id 값을 통해 특정 버튼/인풋박스/div/.. 등을 가리키게 됩니다. 백문이불여일견! 자주 쓰는 jQuery들을 함께 다뤄보면서 익혀보죠! 3. 서버→클라이언트: "JSON"을 이해하기 JSON은, Key:Value로 이루어져 있습니다. 자료.. 2022. 11. 16.