ES6이전에는 var가 변수를 선언하는 문법이었습니다. ES6 이후부터는 let, const도 변수 선언 시 사용할 수 있습니다. 어떻게 사용하면 될까요? 이것은 소스의 가독성과 변수의 사용 범위에 대한 문제입니다. 프로그램에서 변수 선언 후 데이터 저장하고 변경되고 다른 기능에 의해서 참조되는 등 여러 모습으로 사용되다가 어느 시점에서는 사용하지 않습니다. 즉 변수는 생명주기(Life Cycle)와 변수가 적용되는 범위(Scope)가 있습니다. 또한 한번 작성된 프로그램은 요구사항이 추가되고, 변경이 되어 기능이 추가되거나, 축소되거나, 삭제되는 등 많은 변경을 하게 되는데 이때 변수 선언 방법에 따라서 수정이 쉬워지거나 어려워 집니다. 프로그램은 처음 개발한 개발자가 수정을 하지 않고 다른 개발자가 ..
변수에 할당된 값을 다른 자료형으로 변환하는 것을 의미하며 타입 캐스팅이라 합니다. 일반적으로 변수를 선언하고 데이터를 대입하면 그 시점에 변수의 타입이 결정됩니다, 그 후 프로그램에서 강제 형변환 하고자 할 때 String, Number, Boolean 함수를 사용합니다. let sStr = "2"; console.log(typeof sStr, sStr); // string 2 // 문자열을 숫자형으로 형변환 합니다. sStr = Number(sStr); console.log(typeof sStr, sStr); // number 2 // 숫자형을 문자형으로 형변환 합니다. sStr = String(sStr); console.log(typeof sStr, sStr); // string 2 // boole..
언어 관련 도서를 보거나 블로그를 보면 불변, 가변이라는 단어가 나옵니다, 이 단어의 의미는 무엇일까요? 가변, 불변의 의미를 알기 위해서는 변수에 저장된 데이터가 어떻게 메모리에서 관리되는지 알아야 합니다. 오늘의 이야기는 JavaScript로 불변 값, 가변 값에 대해서 알아보고자 합니다. 1. 데이터 할당 1. 변수 선언과 데이터 저장 시 메모리 상태 var a : 변수 a를 선언하면 메모리의 변수 영역의 임의의 주소에 할당이 됩니다. - 101 번지에 변수 a가 할당됩니다. a = 'abc' : 변수 a에 값을 대입(저장) 하면 메모리의 데이터 영역을 스캔하여서 없으면 임의의 주소에 값을 할당하고 변수 a를 가리키고 있는 주소의 값으로 데이터 영역의 임의의 주소를 저장하게 됩니다. - 'abc' ..
배열은 동일 자료형의 데이터를 묶어서 관리하는 자료형으로 JavaScript에서는 객체(Object)입니다. 객체 순회(Iterate)를 할 때 for in사용하면 for문 보다 느립니다. for in은 프로토타입 체인에 있는 프로퍼티를 모두 훑는(enumerate)데다가 객체 자신의 프로퍼티만 훑으려면 hasOwnProperty를 사용해야 하기 때문입니다. 배열을 만들 때 배열 생성자에 파라미터를 넣어 만드는 방법은 헷갈릴수 있으므로 항상 각 괄호([]) 노테이션을 이용해 배열을 만들 것을 권합니다. push, pop 보다 unshift, shift가 느립니다. 1. 배열에 값 표시 하기 for 반복문을 사용해서 배열 요소 값을 참조 할 수 있습니다. var lists = [1, 2, 3, 4, 5];..
C, Java와 같은 언어는 변수의 데이터 형식은 정적 타입입니다. 즉 변수를 선언할 때 어떤 데이터 형식을 사용하는지 선언을 해야 하지만 JavaScript, Python은 변수에 데이터를 대입할 때 동적으로 할당이 됩니다. 다른 말로 이야기하면 변수에 대입하는 값에 따라서 변수의 테이터 형식이 변한다는 이야기입니다. 1. 기본 자료형 문자열(String) : 문자 데이터를 문자열로 저장하는 것으로 작은따옴표 또는 큰 따옴표를 사용합니다. 숫자(Number) : 숫자를 나타내는 값을 데이터로 저장합니다, 범위는 -2**53 ~ 2**53 bigInt : 숫자(Number)의 범위를 벗어나는 값으로 숫자 뒤에 n을 붙입니다. 불린 : true, false를 뜻하는 단일 비트 저장하는 것으로 JavaScr..
var로 선언된 변수는 어디에서 선언되고 사용되는 곳에 따라서 전역 변수라 사용되기도 하고 지역변수로도 사용하게 됩니다, 또한 전역 변수로 선언되어서 사용할 때 동일 이름을 선언되어 사용되면 값을 서로 덮어쓰게 됩니다. 즉 동일 이름을 사용하면 데이터는 공유됩니다. 이것은 자바스크립트에서 전역 변수는 전역 네임 스페이스 안에 존재하기 때문입니다. 이것이 변수의 스코프 문제입니다. 이 문제를 해결하기 위해서 여러 방법 중 JavaScript 전략 패턴을 제외하고 JavaScript에서 let, const가 사용하여 변수의 범위를 해결할 수 있습니다. 1. let 블록 유효 범위를 갖는 지역변수로 선언과 동시에 초기화할 수 있습니다. { read/write ) 전역 범위 선언에 사용(최상위 스코프 선언) 해..
프로그램 안에서 기능에 따라서 변하는 값을 변수라 합니다. 변수는 숫자나 문자열 와 같은 단순한 데이터 형식, 객체, 복잡한 데이터 형식을 담는 저장소이며 자바스크립트에서 변수 선언은 var, const, let 키워드를 사용하고 선언과 초기화를 각각 하거나, 선언과 초기화를 동시에 할 수 있습니다. 1. 자바스크립트 변수 선언 var : 블록 범위를 무시하고 전역 변수나 함수 지역 변수로 선언 let : 블록 유효 범위를 갖는 지역 변수 ( ES6 ) { read/write ) const : 블록 범위의 상수를 선언합니다. 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없습니다. ( read ) 1-1. var 변수를 선언하는 키워드 중에 하나로 초기의 자바스크립트는 변수 선언은 모두 var로 선언..