Languages

Languages/JavaScript

[JavaScript] 변수 선언 시 var, let, const의 차이

자바스크립트는 매니지드 언어(managed language)이다. 이는 개발자가 직접 메모리를 제어하지 못한다는 것을 뜻한다. 파이썬과 같이 직접 메모리 주소를 통해 값을 저장하고 참조할 필요가 없고 변수를 통해 안전하게 값에 접근이 가능하다. 여기서 ES6 이후부터 var, let, const로 변수를 선언할 수 있는데 각각의 차이점을 잘 알고 사용하는 것이 좋다. 1. var 변수 재선언 가능 함수 스코프(functional scope)로 호이스팅이 발생 2. let 변수 재선언 불가능 변수 재할당 가능 블록 스코프(block scope)로 호이스팅이 발생 3. const 변수 재선언 불가능 변수 재할당 불가능 블록 스코프(block scope)로 호이스팅이 발생 console.log(a); var ..

Languages/JavaScript

[JavaScript] 호이스팅(Hoisting)

호이스팅(Hoisting)이란 자바스크립트 인터프리터가 변수와 함수 안에 있는 선언들을 모두 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다. 하지만 주의해야 할 점은 실제로 위치가 옮겨지는 것이 아니라 그렇게 된 것처럼 실행이 된다는 뜻이라는 것을 염두에 두어야 한다. 즉, 선언이 코드 실행보다 먼저 메모리에 저장되는 과정으로 인해 야기되는 현상이다. 변수가 생성되는 절차는 아래와 같다. 1단계: 선언 단계(Declaration phase) - 변수를 실행 컨텍스트의 변수 객체에 등록한다. - 이 변수 객체는 스코프가 참조하는 대상이 된다. 2단계: 초기화 단계(Initialization phase) - 변수 객체에 등록된 변수를 위한 공간을 메모리에 확보한다. - 이 단계에서 변수는 undefi..

Languages/Python

[Python Error] Json 데이터 파싱(parsing) 에러 - JSONDecodeError

Error: json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 366 (char 365) Json으로 데이터를 load하여 parsing할 때 발생할 수 있는 에러이다. api의 결과값을 잘 가져와 값을 수신한 것처럼 보이는데 막상 json.loads로 파싱해보면 에러가 나는 경우가 많다. 위의 에러 또한 json 데이터를 파싱할 때 나온 에러이다. 직관적으로 해당 string 데이터의 해당 위치의 +- 5 이내로 print하여 보면 어떠한 문자가 빠졌는지 알 수 있다. 하지만 나는 json 데이터 사용에 익숙하지 않아서인지 이 방식만으로는 아래와 같이 출력되어 발견하기 힘들었다. pr..

AlienCoder
'Languages' 카테고리의 글 목록 (5 Page)
loading