코딩/자바스크립트 12

자바스크립트 : 콜백함수

콜백 함수 다른 함수에 매개변수로 넘겨준 함수를 의미합니다. 매개변수로 넘겨받은 함수는 넘겨받고, 나중에 호출(call back)한다는 것이 콜백함수의 개념입니다. 위에 예와 같이 loveSWF, linkSWF, danceSWF 3개의 함수를 선언하고 loveSWF 함수를 호출할 때 매개변수로 count에 숫자값, link와 dance에 각각 linkSWF와 danceSWF 함수를 전달했습니다. 여기서 linkSWF함수와 danceSWF함수가 콜백함수 인 것입니다. loveSWF함수가 먼저 호출되고, 매개변수로 들어온 count 값에 따라 linkSWF와 danceSWF함수 둘 중 한가지가 나중에 호출됩니다. 위 코드는 count가 5이기 때문에 linkSWF가 실행이 됩니다.

자바스크립트 : 스코프 (Scope)

스코프란? 스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념입니다. 스코프의 이해가 부족하면 다른 개념을 이해하기 어렵습니다. 더욱이 자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요합니다. 그리고 var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프도 다르게 동작합니다. 스코프는 변수 그리고 함수와 깊은 관련이 있습니다. 우리는 스코프를 이미 경험했습니다. 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고 함수 몸체 외부에서는 참조할 수 없다고 했습니다. 이것은 매개변수를 참조할 수 있는 유효범위, 즉 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문입니다. 변수는 코드의 가장 바깥 영역뿐 아니라..

자바스크립트 : 원시 값과 객체의 비교

자바스크립트가 제공하는 7가지 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있습니다. 원시 타입과 객체 타입은 근본적으로 3가지 측면에서 다릅니다. • 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)입니다. 이에 비해 객체 타입의 값, 즉 객체는 변경 가능한 (mutable value)입니다. • 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장됩니다. 이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장됩니다. • 원시 값을 같는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달됩니다. 이를 값에 의한 전달(pass by value)이라고 합니다. 이에 비해 객체를 가리키는 변수를 다른 변수에 할당..

자바스크립트 : 객체 리터럴

객체란? 자바스크립트는 객체(object)기반의 언어이며 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)들은 모두 객체 입니다. 원시 타입(primitive type)은 단 하나의 값만 나타내지만 객체 타입(reference type)은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조입니다. 또한 원시 타입의 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값은 변경 가능한 값(mutable value)입니다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 키(key)와 값(value)으로 구성됩니다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있습니다. 자바스크립트의 함수는 일급 객체이므로 함수도 ..

자바스크립트 : 타입 변환과 단축 평가

타입 변환이란? 자바스크립트의 모든 값은 타입이 있습니다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환 할 수 있습니다. 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅 (type casting)이라고 합니다. 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 합니다. 이를 암묵적 타입 변환 (implicit coercion) 또는 타입 강제 변환(type coercion) 명시적 타입 변환이나 암묵적 타입 변환이 기존 원시 값을 직접 변경하는 것은 아닙니다. 원시 값은 변경 불가능한 값(immutable value)이므로 변경할 수 없습니다. 타입 변환이란 기존 원시..

자바스크립트 : 제어문 (JavaScript Iteration)

제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있습니다. 블록문 블록문(block statement)은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 합니다. 자바스크립트는 블록문을 하나의 실행단위로 취급합니다. 블록문은 단독으로 사용할 수도 있으나. 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적입니다. 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 세미콜론을 붙이지 않습니다. 조건문 조건문(conditional statement)은 주어진 조건식(conditional expression)의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정합니다. 조건식은 불리언 값으로 평가될 수 있는 표현식입니다. 자바스크립트는 if..

자바스크립트 : 연산자 (JavaScript : Operator)

연산자는(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산(operation)등을 수행해 하나의 값을 만듭니다. 이때 연산의 대상을 피연산자(operand)라고 합니다. 피연산자는 값으로 평가될 수 있는 표현식이어야 합니다. 그리고 피연산자와 연산자의 조합으로 이루어진 연산자 표현식도 값으로 평가 될 수 있는 표현식입니다. 피연산자(operand)는 연산의 대상이 되어야 하므로 값으로 값을 평가할 수 있어야 합니다. 연산자(operator)는 값으로 평가된 피연산자를 연산해 새로운 값을 만듭니다. 산술 연산자 산술 연산자(arithmetic operator)는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만듭니다. 산술 연산이 불가능 한 경우 ..

데이터 타입

데이터 타입 (줄영서 '타입')은 값의 종류를 말합니다. 자바스크립트의 모든 값은 데이터 타입을 갖습니다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공합니다. 7개의 데이터 타입은 원시(primitive)타입과 객체(object/reference) 타입으로 분류 할 수 있습니다. 원시 타입 • number type • string type • boolean type • undefined type • null type • symbol type • 객체 타입 -> 객체, 함수, 배열 개발자는 명확한 의도를 가지고 타입을 구별해서 값을 생성해야하며 자바스크립트 엔진은 타입을 구별해서 값을 취급해야 합니다. 숫자 타입 C나 자바의 경우(소수점 이하가 없는 숫자)와 실수(소수점 이하가 있는 숫자) 구분해서 ..

표현식과 문

값 값(value)은 표현식(expression)이 평가 되어 생성된 결과를 말합니다. 평가(evaluate)란 식을 해석해서 값을 생성하거나 참조하는 것을 의미합니다. 모든 값은 데이터 타입을 가지며 메모리 공간에 2진수 (비트의 나열)로 저장된다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이라고 전 포스트에서 이야기했습니다. 따라서 변수에 할당 되는 것은 값입니다. 변수 이름 sum이 기억하는 메모리 공간에 저장된 것은 10 + 20 이 아니라 값 30입니다. 따라서 10+20은 할당 이전에 평가되어 값을 생성해야 합니다. 값을 생성하는 가장 기본적인 방법은 리터럴을 사용하는 것입니다. 리터럴 리터럴은 사람이 이해할 수 있는 문자 또는 ..

자바스크립트 변수

변수란 무엇인가? 왜 필요한가? 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념입니다. 자바스크립트 엔진이 위 자바스크립트 코드를 계산하려면, 먼저 10, 20, + 라는 리터럴과 연산자(literal, operator)의 의미를 알고 있어야 하며, 10 + 20이라는 표현식(expression)의 의미도 해석(parsing)할 수 있어야 합니다. 자바스크ㅡ립트 엔진이 10+20이라는 식의 의미를 해석하면 + 연산을 수행하기 위해 먼저 +연산자의 왼쪽 숫자(10), 오른쪽 숫자(20)의 값을 기억합니다. 피연산자 10과 20은 2진수의 임의의 메모리 공간에 저장되고 CPU는 이 값을 읽어들여 연산을 수행합니다. 연산결과로 생성된 숫자값 30도 2진수의 임의의 메모리 공간에 저장됩니다. 성공적..