Kakao Cloud School/카카오클라우드스쿨 수업 (7) 썸네일형 리스트형 [Javascript] Javascript 변수 - var, let, const JavaScript 변수 CPU에서 연산을 수행하고, 데이터는 memory에 저장되어 있다. CPU가 메모리에 엑세스할 때 바이트 단위로 엑세스를 하는데, 여기서 memory cell은 1바이트씩 이루어진 메모리의 공간을 의미한다. 메모리의 주소는 16진수로 시작된다. 메모리에 데이터를 가져와서 CPU가 특정 연산을 수행한 후 결과를 새로운 공간에 저장한다. 메모리를 넣고 빼고 저장하기 위해서는 메모리의 주소를 알아야한다. 메모리 주소는 쉽게 알 수 없고, 메모리에 직접적인 접근이 어렵기 때문에 메모리 주소를 reference를 할 수 있는 변수를 사용해야 한다. (C언어를 제외한 대부분의 언어들은 메모리에 직접 접근이 어렵다.) 변수(식별자) 변수 → 식별자(identifier) 식별자가 가지고 있는 .. [Javascript] 데이터 타입 데이터타입 기본적인 용어 1. literal (리터럴) 특정 값을 나타내기 위해 사람이 이해할 수 있는 문자, 약속된 기호, 기호를 이용하는 notation(표기법) 1 ) 3 - 숫자 literal 2 ) 'Hello', "Hello", `Hello`(ES6에 새롭게 표현된 문자열) - 문자literal 3 ) null(개발자가 직접 사용하는 값) - null literal 4 ) undefined(변수가 있는데 아직 초기화가 이루어지지 않았다는 것을 의미) -undefined literal 5 ) {'name' : 'kim'} - 객체 literal 6 ) [1, 2, 3] - 배열 literal 7 ) function( ){ } -함수 literal 2. statement(문) - 프로그램의 최소 .. [Javascript] History of Javascript, ES6 수업에 들어가기 앞서 수업 과정 ECMAScript -> React -> Java -> Database -> Servlet -> Spring History of Javascript 자바스크립트는 웹에서 사용 가능한 목적으로 prototype 기반 함수형 언어로 만들어졌다. 자바스크립트는 자바와 연관은 없으며, 이름만 자바스크립트로 불려졌다. 당시, 자바스크립가 처음 생기고 이 언어를 가지고 표준화를 진행하려고 했다. 이때, 표준화를 비영리 표준기구인 ECMA에서 진행하였고, ECMAScript라는 이름으로 표준화가 진행된다. Javascript와 ECMAScript가 같다고 볼 수 있을까? 같지 않다. JavaScript는 ECMAScript와 환경에 따른 알파가 합쳐진 개념이다. 흔히 말하는 JavaS.. [Javascript] 객체(2) 객체는 Property의 집합 property는 property attribute(속성)를 가진다. Javascript 객체는 내부 slot과 내부 method를 가지고 있다. ( 이것도 역시 property라고 할 수 있다 ) 내부 slot과 내부 method는 개발자가 직접적으로 사용할 수 없다. ( Javascript Engine에 의해 사용이 가능하다 ) 내부 slot [ [ ... ] ] 내부 method [ [ ... ] ] obj.__poroto__ 를 사용하면 직접적으로 내부 slot에 접근할 수 있다. obj.__poroto__ 는 [[Prototype]]에 접근할 수 있다. property attribute property를 생성할 때 해당 property의 상세를 나타내는 값이다. (.. [Javascript] 스코프 스코프(Scope) 식별자가 유효한 범위를 의미한다. 스코프 체인(Scope chain) 자바스크립트 엔진이 identifier을 찾을 때 사용하는 매커니즘을 의미한다. 모든 스코프는 global 스코프와 연결되어 있다. Javascript 엔진은 코드를 실행할 때 Context(문맥)을 고려해서 실행한다 현재 실행중인 코드가 어디에 있는 코드이고 코드 주변 정보를 파악해서 실행한다는 의미이다. ≫ lexical Environment → execution context 거의 대부분의 언어(Javascript포함)는 Lexical Scope를 사용한다 동적스코프 Dynamic Scope 함수가 호출되었을 때, scope를 함수가 호출된 곳을 기준으로 설정 정적 스코프 Static Scope, Lexical.. [Javascript] 함수 Javascript의 함수는 객체이다 function(함수) 일련의 과정을 수행하기 위한 statement를 { }(중괄호)를 이용해서 하나의 실행 단위로 만들어 놓은 것이다. 함수를 사용하려면 함수를 정의하고 호출(call, invoke)해서 사용한다. 함수 사용 목적 반복적인 코드를 함수화 시키면 1. 유지보수가 좋다. 2. 오류 발생률이 적어지고 그에따라 신뢰도가 높아진다. 함수의 정의(definition) 이름이 있는 함수는 named function (기명함수) 이름이 없는 함수는 anonymous function (익명함수) - literal로 변수에 저장할 때 많이 사용한다. 기명함수(이름 있는 함수) function add(x, y){ // 함수이름과 파라미터(매개변수) return x +.. [Javascript] 객체 Javascript는 객체지향(기반) 언어 자바스크립트를 구성하는 대부분은 객체로 구성되어 있다. 원시타입(문자열, 숫자 등)은 불변의 특징을 가지고 있으며, 이와 반대로 객체는 변한다는(mutable) 특징을 가지고 있다. 그렇다면 원시타입 변수를 불변으로 만들어야 할 필요가 있을까? 그 이유는, 값을 그 자리에서 바꿔버리게 되면 나중에 잘못되었을 때 어디서 잘못되었는지 추적하기가 어려워진다. 따라서 불변으로 새로운 주소에 값을 주어, 추적하기 쉬워진다. 정리하자면 값이 바뀌게 되는 이력을 추적하기 좋기 때문이다. 객체는 왜 mutable한 특성으로 만들었을까? 객체의 경우 원시타입보다 크기가 크고, 이를 불변으로 하게 되면 메모리의 효율성이 떨어지기 때문이다. Javascript의 객체 (객체 lit.. 이전 1 다음