함수 1. 함수란? 자바스크립트에서 함수란 굉장히 중요한 개념이다. 단순히 c/c++ , java에서 보이는 함수와는 달리 자바스크립트에서의 핵심 개념인 스코프, 실행 컨텍스트, 클로저, this, 프로토타입, 모듈화 등이 있다. 힘수의 선언(정의)은 다음과 같다. function add(x,y){ return x + y; } 따로 함수의 반환 타입, 매개변수 타입을 안써주어도 된다. 2. 함수 리터럴 자바스크립트에서 함수는 객체 타입이다. 따라서 객체 리터럴도 객체를 생성할 수 있는 것처럼, 함수도 함수 리터럴로 생성할 수 있다. 함수 리터럴은 function 키워드, 함수 이름, 배개 변수 목록, 함수 몸체로 구성된다. var func = function add(x, y){ return x + y; ..
원시 값과 객체의 비교 1. 원시 타입과 객체 원시타입을 가지는 원시 값은 변경 불가능한 값이다. 반면에 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 원시 값을 변수에 할당하면, 변수에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 이는 어떤 차이를 보이냐면, 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달(pass by value)라고 한다. 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달( pass by reference )라고 한다. 2. 원시 타입 여기서 중요한 것은 원시 타입의 값을 갖는 변수가 값을 바꾸지 못한다는 것은 변수가..
객체 리터럴 1. 객체란?? 자바스크립트에서는 원시 값 빼고는 모두 객체로 사용된다. 즉, 함수, 정규 표현식, 배열 등 모두 객체로 구성되어있다. 또한, 객체는 원시 값과는 달리 immutable이 아닌, mutable한 값이다. 이는 추후에 다시 배워보도록 하자 자바스크립트에서의 객체 표현은 다음과 같다. var person = { name: 'lee', // key - value age : 20 // key - value } person이라는 객체를 생성한 것이다. 객체는 property로 이루어지는데, name : 'lee' 와 age: 20 을 각각 property라고 부른다. 여기서 property는 key : value 형식을 띈다. 재밌는 것은 굳이 변수를 선언..
타입 변환과 단축 평가 1. 타입 변환 명시적 타입 변환 ( 타입 캐스팅 ) : 개발자가 의도적으로 타입을 변환하는 것이다. 암묵적 타입 변환 ( 타입 강제 변환, type conversion) : 자바스크립트 엔진에 의해 실행 도중에 타입이 변환되는 것을 말한다. 한 가지 명심해야 할 것은 명시적 타입 변환이나 암죽적 타입 변환이나 기존 원시 값을 직접 변경하는 것은 아니다. 원시 값은 immutable한 값이기 때문에 변경이 불가능하다. 단지, 다른 타입의 새로운 값을 생성하는 것이다. var temp = 1; console.log(typeof temp.toString()); // string console.log(typeof temp) // Number 위는 명시적인 타입 변환에 해당한다. 그러나,..
1. 연산자 기본적으로 자바스크립트에서 연산자는 c언어나 java와 크게 다를바는 없다. 따라서, 특이한 부분만 집고 넘어가도록 하자 2. 동등 비교와 일치 비교 동등 비교 ( == ) (또는 추상 동등성 비교 연산자라고 한다. ) 동등 비교는 느슨한 비교를 한다. 느슨한 비교란 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 뒤 값인지 비교한다. 기본적으로 Number로 바꾼다고 생각하면 된다. 즉 다음의 예제를 보면 된다. console.log( 5 == 5) // true console.log( 5 == '5') // true 문자열 '5'를 암묵적 타입 변환으로 바꾸면 5가 된다. 따라서 5 == '5'는 true가 된다..
1. 데이터 타입 ES6는 7개의 데이터 타입을 제공한다. 데이터 타입은 크게 두 가지로 분류할 수 있는데 '원시 타입' 과 '객체 타입' 이다. 원시 타입 숫자 타입 : 숫자, 정수, 실수를 구분없이 숫자 타입만이 존재 문자열 타입 : 문자열 boolean 타입 : 참, 거짓 undefined 타입 : var, let 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 : 값이 없다는 것을 의도적으로 명시할 때 사용 symbol 타입 : ex6에서 추가 된 타입 객체 타입 객체 , 함수, 배열 등 2. 숫자 타입 재밌게도 js에서는 정수, 실수를 구분하지 않는다. 오직 숫자 타입만 있으며, 숫자 타입은 64비트 부동소수점 형식을 따른다. 즉, 정수도 실수와 같이 취..
회사를 다니면 시험은 안보니까 좋다. 그러나, 시험을 봐도 좋으니까 방학을 되돌려줬으면 좋겠다 ㅜ 회사에서 하라는 알고리즘 공부는 안하고 JS 공부나 하련다!! 1. 값 값은 식(표현식)이 평가(또는 계산)되어 생성된 결과를 말한다 10 + 20 //30 위의 예제에서, 다음의 10+20 식이 평가(계산)되어 30이라는 결과가 만들어진다. 이러한 값은 메모리에 2진수로 저장되는 것이다. 2. 리터럴 var result = 10 + 20; 이 있다고 하자, 10 + 20이라는 표현식에서 우리는 30이라는 값을 얻어올 수 있다. 30이라는 값은 메모리에 2진수로 저장되고, result라는 변수로서 식별하는 것이다. 그런데, 10과 20은 컴퓨터가 어떻게 알아들을까?? 이것은 '리터럴'이라고하여..
오늘은 회사에서 혼이 났다. 정확히는 딴 부서 담당자에게 기분 나쁜 추궁을 당했었다. ?? : 여태까지 뭐하셨길래 지금와서 문제를 말하시는가죠?? 끝까지 집중합시다 흠녀... 그냥 뻘쭘해서 나에게 탓을 몰았다고 생각하고 있다. 그렇지만 기분이 안좋은 것은 변함이 없다. 기분 전환할 겸 자바스크립트나 배워보도록 하자 1. 변수 프로그래밍 언어의 가장 기초적인 문법인 변수이다. 컴퓨터는 모든 데이터를 2진수로 처리한다. 즉, 메모리에 저장되는 데이터들인 숫자, 텍스트, 이미지 , 동영상 등등 모두 2진수로 메모리에 저장되는 것이다. 다음과 같이 생긴 메모리에 변수들이 저장되는 것이다. 메모리는 크기에 따라 메모리 주소가 달라지는데, 4GB에서는 저렇게 표현된다. console.log(10+20) 그럼 다음의..