C나 Java와 같은 다른 프로그래밍 언어에는 정수 타입 변수(int), 부동소수점 타입 변수(double) 등이 있어 그 변수의 타입과 일치하는 데이터만 저장이 가능합니다.
int num = 3; // num변수가 정수 타입 변수인 int로 타입 선언이 됩니다.
int string = “hello”; // 문자열인 “hello”는 정수타입 변수인 int에 맞지 않으므로 오류
이와 같이 변수에 타입이 있는 언어를 정적 타입 언어(static typed language)
라고 합니다.
하지만 동적 타입의 언어는 모든 타입의 데이터를 저장할 수 있습니다. 아래와 같이 실행할 때 변수에 저장된 데이터 타입을 동적으로 바꿀 수 있다는 것이죠.
num = 3; // 따로 타입 선언 없이도 num이 ‘3’이라는 숫자로 선언됨.
var num = 3;
var string = 3; // 모두 타입 에러 없이 num 또는 string 변수에 ‘3’이라는 숫자로 선언됨.
이와 같이 우리가 사용할 자바스크립트는 변수에 타입이 없는 동적 타입 언어(dynamic typed language)
입니다.
: 자바스크립트는 타입이 없기 때문에 숫자 모두 64bit 부동소수점으로 표현합니다.
var num = 3.4; // num에 정수 3.4를 저장
var num = 34; // num에 정수 34를 저장
: 모든 숫자는 +,-,/,*,%를 할 수 있습니다.
var plus = num + 1;
console.log (plus); / num과 1을 더한 값
var mul = num * 5;
console.log(mul); / num과 5을 곱한 값
var remainder = 10 % 7;
console.log(remainder); / 10을 7로 나눈 나머지, 3
: 곱하기와 나누기 (먼저)>>>더하기 빼기
var num = 10 + 5 * 10;
console.log(num); // 153숫자 판별하기
: JavaScript에서 제공하는 기능들 중 typeof 연산자를 이용해서 어떤 종류의 값인지 확인할 수 있습니다.
var age = 30;
console.log(typeof age); // number
: 따옴표(‘’), 큰따옴표(“”)로 쌓여 있으며, 문자열을 나타냅니다.
var str = “안녕하세요 이민재입니다.”; // “안녕하세요 이민재입니다.” 라는 문자열 생성
var str = 안녕하세요 이민재입니다.; // 다음과 같은 값도 없고 문자열도 아님
: 숫자를 더할 때와 마찬가지로 + 기호를 사용하여 아래와 같이 문자열을 붙일 수 있습니다.
var sayHello1 = “안녕하세요”;
var sayHello2 = “저는 이민재입니다.”;
console.log(sayHello1+sayHello2); // “안녕하세요저는 이민재입니다.”
: .length
를 이용하여 모든 문자열은 그 길이에 대한 정보를 알 수 있습니다.
var num = “안녕하세요”;
console.log(num.length); // 5개
: 문자열 종류의 값은 인덱스 정보를 이용하고, 인덱스라는 정보는 위치/순서를 의미하는 것과 비슷하다고 생각하면 됩니다. 인덱스는 항상 0부터 시작
하게 되죠.
var alp = “abcd”;
console.log(alp[0]); // “a”
console.log(alp[3]); // “d”
: 2가지 리터럴 값 true(참, 1), false(거짓, 0) 중 하나의 값을 가지며 조건부 테스트에 사용되기도 합니다.
console.log(3 > 30) = false;
console.log(30 > 3) = true;
null == undefined // true. 동등연산자, 값만 서로 같음.
null === undefined // false. 일치연산자. 값은 같으나 타입은 다름. null의 type은 object
: 객체(object)는 다수의 property 혹은 method를 하나의 이름으로 묶어놓은 집합체
var Iam {
name: lee, /// Iam이라는 객체에 name(KEY): lee(VALUE) 저장
age: 150; /// Iam이라는 객체에 age(KEY): 150VALUE) 저장
}
: 순서가 있는 데이터 집합을 Array(배열) 이라고 합니다.
object(객채)와 달리 배열은 인덱스가 ()으로 시작하는 숫자형 인덱스를 사용하며 한 개의 변수의 여러개의 값을 순차적으로 저장할 수 있습니다.
: 함수의 기능으로서 input 받기, 기능수행, output 반환 등의 구성요소가 있습니다.
동적 타입언어
입니다. 숫자가 할당된 변수라도 문자열이나 불리언 값 등을 재선언/재할당 할 수 있습니다.var num = 10;
console.log(num); / 10
var num = 1000;
console.log(num); / 1000
변수를 한번 더 선언했음에도 불구하고 에러가 나오지 않고 각기 다른 값이 출력됩니다. 이는 유연한 변수 선언으로 간단한 테스트에는 편리 할 수 있겠으나, 코드량이 많아 진다면 어디에서 어떻게 사용될지도 파악하기 힘들뿐더러 값이 바뀔 우려가 있습니다.
let num = 10;
console.log(num); / 10
let num = 100;
console.log(num);/ Uncaught SyntaxError: Identifier 'num' has already been declared 재선언 불가능
num = 100;
console.log(num); / 100 재할당 가능
이렇게 변수 선언 방식의 재선언/재할당을 통하여 데이터 타입을 변경해줄 수 있고, parseInt() 라는 함수를 통해서 변경해 줄수도 있다.
var a; (선언) // 데이터가 담길 공간(임의의 주소)확보하고, 확보된 데이터의 주소값을 가지고 변수명과 매칭시킴.
a = c; (할당) // 매칭된 주소로 이동하여 c를 저장한다,