본문 바로가기

JavaScript Study24

JavaScript - #18. let, const 앞서서 알아본 결과 var 키워드는 다음과 같은 문제를 가지고 있다. 1. 변수의 중복 선언 허용 2. 함수 레벨 스코프 3. 변수 호이스팅 이 문제점들을 해결하기 위해서 ES6에서는 변수를 선언할 때 let, const를 추가하였다. 두개의 키워드들에 대해 알아보자 1. let 키워드 - 변수 중복 선언 금지 var에서는 변수의 중복선언이 허용됬지만 let키워드는 변수가 중복선언 될 시 SyntaxError를 발생시킨다. let foo = 100; let foo = 200; // SyntaxError : Identifier 'foo' has already been declared - 블록 레벨 스코프 var는 함수 레벨 스코프를 가지기 때문에 함수 외에 다른 코드블록에서 선언된 변수는 지역변수가 아닌 .. 2023. 8. 31.
JavaScript - #17. 전역변수의 문제점 앞서서 계속 배우고 있지만 자바스크립트에서 전역변수의 무분별한 사용은 위험하다. 오늘은 그 이유에 대해서 알아 볼 예정이다. 1. 변수의 생명주기 변수는 선언되고 할당되며 필요성이 없어지면 소멸한다. 우리는 이러한 과정을 변수의 생명주기라고한다. - 지역 변수의 생명주기 지역변수는 해당 지역의 생명주기와 같이 생성되고 소멸한다. function foo () { var x ='local'; console.log(x); return x; } foo(); console.log(x); //ReferenceError foo 라는 함수는 함수선언문에 의해 정의 되어있지만 정의만 된다고 생성되는 것이 아니다. 함수 실행문이 있어야 생성될 수 있다. foo() 실행문이 실행되고 난 후 함수 foo는 실행되며 이 함수가.. 2023. 8. 31.
JavaScript - #16. 스코프 스코프란 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. Scope는 해석해보면 범위라는 뜻을 가지고 있다. 프로그래밍에서 스코프 역시 범위를 뜻한다. 우리는 앞선 공부에서 스코프를 경험했고 그 내용을 보며 스코프가 무엇인지 알아보자. function add (a,b) { console.log(a+b); //5 return a+b; } add(2,3); console.log(a,b)//ReferenceError 위 코드는 이전시간에 알아본 함수 선언식이다. 이때 add라는 함수는 매개변수 a, b를 가지게 된다. 함수 내부에서는 이 매개변수 a, b를 사용한 문들이 실행이 잘 되지만, 마지막줄에 함수 외부에서 이 매개변수에 접근하려고 하면 참조오류가 발생한다. 오류가 발생하는 이.. 2023. 8. 30.
JavaScript - #15. 함수(2) 함수를 정의 하였으면, 함수를 호출해야한다. 함수 호출법에 대해서 알아보자 - 함수의 호출 1) 매개 변수와 인수 함수를 실행시키기 위해 정의 된 함수에 건내주어야 하는 값이 있을 수도 있다. 이때 매개변수를 통해 인수를 전달 할 수 있다. 인수는 값으로 평가 되어야하며 개수는 제한이 없다. function add(x, y){ return x+y; } console.log(add(1,2)); 함수가 정의 될때 매개변수를 선언할 수 있으며 이 코드에서는 x, y 두개의 매개변수를 선언하였다. 매개변수는 함수 코드블럭 내에서 변수처럼 사용된다. 함수 외부에서는 사용 불가능 하다. 이 매개변수에 전달 된 인자는 1, 2로 순서에 맞게 함수에 전달될 때 x=1, y=2로 전달된다고 생각하면 된다. 매개변수의 개.. 2023. 8. 29.
JavaScript - #14. 함수(1) 함수란 자바스크립트에서 가장 중요한 핵심이다. 프로그래밍에서 함수란 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행단위로 정의한 것이다. 자바스크립트에서는 왜 함수를 사용할까? 함수는 개발자가 필요로 할 때 실행될 수 있다. 즉 실행 시점을 개발자가 결정할 수 있으며, 여러번 사용이 가능하다. 반복적인 작업이 많을 경우 함수로 정의해서 실행시키는 것이 더욱 효율적이다. 또한 반복이 많은 코드에는 문제가 생길 시 반복되는 코드를 다 수정해야하는 반면 함수는 함수 정의부만 수정하면 되기때문에 유지보수 편의성이 높고, 반복하지 않으니 문제가 생길 가능성도 낮다. 또한 함수에는 식별자가 있기 때문에 함수의 역할을 가독성 좋게 알수 있다. 결론적을 함수를 사용하는 이유는 다음과 같다 1. 코드의 .. 2023. 8. 29.
JavaScript - #13. 원시값과 객체(2) 2. 객체 객체는 프로퍼티의 집합으로 프로퍼티 개수가 정해져있지 않다. 프로퍼티는 동적으로 계속 추가되고 삭제 될 수 있으며, 값 역시 제한이 없다. 이러한 특성 때문에 원시값과 객체는 분리되어 정의하며, 어떤 점이 원시값의 개념과 다른지 비교를 통해 알아보자. - 변경가능한 값 객체는 변경가능한 값이다. 객체 변수에 할당하면, 실제 객체 그 자체는 새로운 공간에 할당이 되며, 변수가 가지고 있는 값은 실제 객체가 아닌, 실제 객체가 저장된 공간의 주소가 저장이 된다. 즉, 값이 아닌 참조값이 저장되는 것이다. 원시값은 변경이 불가능하기 때문에 재할당 외에 값을 바꿀 수 있는 방법이 없다. 하지만 객체는 변경이 가능한 값이다. 재할당 없이도 값의 변경이 가능하며, 동적으로 값을 추가할 수도 있다. let.. 2023. 8. 28.