목록✏️ 2022. TIL/July (31)
Daehyunii's Dev-blog

오늘 공부한 내용은 생성자 함수에 의한 객체 생성 방식이다. 처음에 객체라는 단어를 들었을때는 많은 혼란이 야기되었다. 데이터 타입에 객체타입의 값에는 함수, 배열, 객체 등이 있는데, 그렇다면 '함수도 객체이고 객체 리터럴로 만든 객체도 객체이고, 객체는 프로퍼티를 갖는다는데 함수 코드를 작성할때는 프로퍼티는 눈에 안보이고, 그렇다면 객체의 유형별로 다른 성질을 가지고 있는건가?, 그렇다면 그 성질은 무엇이지?' 등 정말 많이 혼란스러웠다. 하지만 오늘 공부한 생성자 함수에 의한 객체 방식과, 혼란을 잠재우기 위해 뒷 부분의 함수 객체 관련 내용을 미리 읽은 덕에 어느정도 체계적으로 머리에 '객체'라는 단어를 정리할 수 있게 되었고, 생성자 함수를 통한 객체 생성 또한 머리속에 잘 정리할 수 있었다. ..

오늘 배운 내용은 퍼로퍼티와 관련된 자바스크립트의 내부 동작들에 대해서 배웠다. 오늘 배운 내용들에 대해서는 평소에 전혀 생각하지 못한 부분이었다. 객체의 프로퍼티를 만들때 단순히, 프로퍼티의 키와 값으로만 구성되는 것이라고 생각해 왔다. 하지만 프로퍼티의 유형에 따라 가지고 있는 프로퍼티 어트리뷰트가 다르고, 또 각 프로퍼티마다 어트리뷰트의 내용을 달리하여, 서로 다른 특징을 지닌 프로퍼티도 만들수 있다는 것을 알게 되었다. 오늘 본 내용에서 가장 헷갈리는, 아직까지도 헷갈리는 부분은 접근자 프로퍼티이다. 접근자 프로퍼티를 통하여 데이터 프로퍼티의 값을 읽을때는 getter 함수가 값을 저장할때는 setter 함수가 호출되는 것은 알겠으나, 아직까지도 접근자 프로퍼티의 용도에 대해서는 정확하게 알지 못..

오늘은 그 동안 듣기만 했던 let, const 키워드에 대해서 배웠다. 자바스크립트 인프런강의를 통해 기본적으로 변수를 선언하는 방법에 3가지 키워드가 있다는 것은 알고 있었지만, 정확하게 어떤 차이점들이 있는지에 대해서는 정확하게 알지 못했었다. 우선 책의 가장 앞부분에 나오는 자바스크립트의 역사를 살펴보았을때, ES6버전 부터 자바스크립트가 주류 프로그래밍 언어로 인정받기 시작했다고 알고 있다. 그렇다면 프로그래밍에서 가장 중요한 요소 중 하나인 변수를 선언하는 키워드인 let, const 키워드의 등장도 자바스크립트가 주류 언어가 되는데 크게 일조했는지 생각해 보았다. 우선 가장 눈에 띄는 var 키워드와 let, const키워드의 차이점은 같은 스코프 내에서의 중복선언을 막는다는게 가장 큰 차이..

정말 솔직하게 오늘 배운 내용은 얼마나 유용한 내용인지는 모르겠다. 전역 변수의 무분별한 사용이 문제를 발생시킬 요소가 많은 것은 알겠으나, 전역 변수의 무분별한 사용을 억제하기 위해 설명해준 방식들(즉시 실행 함수, 네임스페이스 객체, 모듈 패턴, ES6 모듈)이 '오히려 코드의 가독성을 떨어트리는 요소가 되지 않을까?' 하는 생각도 많이 들었다. 특히 네임스페이스 객체를 만들어 사용하는 것도 사실상 그 객체를 변수에 저장해서 활용해야 하는 것인데, 전역 변수 사용을 억제하기 위해 객체를 만들어 전역 변수에 저장해 활용한다 라는 것이 '조금 모순적인 것이 아닌가?' 하는 생각도 들었다. 또 아직 모듈 패턴과, ES6 모듈에 대해 알지 못해서 그런지는 모르겠지만, 오히려 코드의 양이 많으면 많을수록 더 ..

오늘은 스코프에 대해서 자세하게 배웠다. 우선 스코프라는 개념을 배우고 나서 그 동안 쌓여있던 많은 의문점들이 많이 해결이 되었다. 공부를 하면서 교재를 따라 코드를 작성함에 있어 나도 모르는 상황에서 어떤 상황에서는 전역이 참조되고, 어떤 상황에서는 지역이 참조되고 이런 상황들이 펼쳐지다 보니, 그 순간 순간 '아! 이런 상황에서는 이렇게, 저런 상황에서는 저렇게 참조가 되는구나!' 정도로만 체계적이지 못하게 이해하고 넘어가는 상황이 많이 있었다. 그 후에 또 그런 상황을 직면하게 될 때는 머리속에 많은 혼란을 야기했었다. 하지만 오늘 스코프라는 개념을 정확하게 배우고 나서는 그 동안 겪었던 모든 혼란들이 체계적으로 정리가 되었다. 생각해보면 정말 간단한 논리임에도 스코프 개념을 알기 전까지는 많이 혼..

오늘은 자바스크립트의 핵심중에 핵심 함수에 대해서 공부했다. 자바스크립트에 있어서 함수를 처음 공부하는 것이고, 정확한 개념 용어 하나 하나 집중해서 공부했다. 그 결과 생각보다 함수가 어렵게 느껴지지는 않았다. 우선 함수를 정의하는 방법에는 4가지 방식이 있다. 함수 선언문, 함수 표현식, Function 생성자 함수를 통한 함수 객체 생성, 화살표 함수를 통한 함수 생성이다. 그 중 함수 선언문은 표현식이 아닌 문으로 변수에 할당 할 수 없다는것은 주의해야 할 필요가 있다. 그러나 함수 호출문은 표현식인 문이다. 왜냐하면 함수 호출문은 평가되어 함수 반환문의 반환 값으로 평가되는데, 반환 값이 곧 값이고, 값은 곧 표현식이 평가되어 생성된 결과물이기 때문에 함수 호출문은 표현식인 문이다. 즉, 변수에..

오늘 공부한 내용은 비록 내용이 많은 내용은 아닐지라도, 자바스크립트를 이해하는데 굉장히 중요한 원리라 생각되어 3회를 정독했다. 책의 앞부분에서 계속해서 등장했던 '원시 값', '객체', '변경 불가능한 값' 등의 의미를 명확히 알 수 있었다. 세상에는 많은 가치들이 존재한다. 흔히 일상 생활에서는 형평성, 공정성, 자유, 효율성, 효과성, 생산성... 많은 가치들이 공유되고 있다. 자바스크립트에서도 예외는 아닌것 같다. 프로그래밍을 공부하기 이전에는 컴퓨터로 하는 모든 작업에는 뭔가 테트리스 게임처럼 모든게 딱딱 맞아 떨어지고, 엄격하고 정확한 룰에 의해서 모든게 이뤄질 것이라고 막연하게 생각했다. 하지만 자바스크립트를 공부하면 할수록 느끼는 것은 자바스크립트 언어의 기능들도 '각각의 상황에 맞는 가..