자바스크립트 정말 쉽고 건전한 언어인데..
복습한다고 생각하고 자바스크립트의 기초에 대한 강의를 수강하였다.
간단하게 자바스크립트의 역사와 기초, 프론트엔드 개발자의 역할 등을 배웠다.
length 값을 직접 설정해서 배열의 길이를 늘릴 수 있다.
그러나 앵간하면 하지말자
length 속성에는 반영되지 않는다. 즉, 객체를 제외한 요소까지의 길이가 저장된다.
Enumerable과 Configurable을 제외하고 Writable한 원소만 반영된다는 것 같다.
object가 아닌 데이터 타입으로 method가 없다.
Stack에 바로 저장
string은 원시타입이지만 런타임에서 object로 생성되기 때문에 method가 존재한다
대부분 object로 치환되어 저장
실제 데이터는 Heap에 저장되고 Stack에 저장되는 것은 Heap의 주소
외부 변수를 기억하고 접근할 수 있는 함수를 말한다.
모든 스코프는 Lexical 환경이라는 숨겨진 내부 객체를 가지는데 해당 스코프에서 선언된 변수들이 저장된다. 이 때 상위 스코프의 Lexical 환경에 대한 참조도 저장하기 때문에 외부 변수도 사용할 수 있다.
함수는 [[Environment]]
라는 숨겨진 속성을 갖는데 생성될 때의 Lexical 환경을 참조하고 있다. 이는 함수가 생성될 때만 설정된다. 변수 값이 갱신될 때는 해당 Lexical 환경 내부에서 값이 변경된다. 이를 통해 외부 변수를 기억하는 게 가능하다고 한다.
알기 힘든 버그를 잘 수정하기 위해서 사용한다고 하는데 변수가 어느 Lexical 환경에 위치하는지 제대로 인지해야 사용할 수 있을 것 같다.
true
일까 자바스크립트로 코테를 준비하면서 가장 적응 안되던게 빈 배열if ([ ])
이 true
값으로 인식된다는 것이었는데 파이썬이 특이한 것이었을 지도 모르겠다. C에서도 true로 인식된다고 한다.
연산에서는 형 변환이 일어나 빈 배열의 toString()
결과 값인 빈 문자열''
이 되어 falsy한 값이 되지만 자체로 쓰여질 때는 형 변환이 일어나지 않아 truthy한 값이 된다고 한다.
falsy한 값은 자체적으로 정해져 있고 그 외엔 전부 truthy이다.
이게 왜 되지? 얜 왜 안 되지?
자바스크립트의 역사를 찾다가 보았는데, 자바스크립트가 과거에 성능 문제로 간단한 영역에만 쓰였기 때문에 쉽다고 여겨졌을 뿐 실제론 어려운 언어라는 글이 있었다. 정말 어려운 게 맞는 것 같다.