변수를 선언하고 변수 값을 담으려면 어떻게 해야할까요? name 이라는 변수를 선언하고 싶다면 변수명 앞에 var 나 let 를 붙여 주세요.

var name;

or

let name;

var 는 variable 이라는 뜻이므로 변수는 name이라는 뜻이 됩니다. 그러므로 변수명 앞에 var 를 붙이면 선언이 되고, 선언한 변수에 값을 넣으면 초기화(또는 할당)한다라고 표현합니다.

// 변수를 선언만 하는 경우
var 변수명;

// 변수를 초기화(or 할당)한 경우
var 변수명 = "변수값"; 

변수를 여러 개 선언하고 싶다면 콤마를 이용해 한꺼번에 선언할 수 있으며, 각 변수에 하나의 값이 저장됩니다.

var a, b, c, d;
var a = "a", b = "b", c = "c", d = "d";

let 도 변수를 선언할 때 사용됩니다. var 와 다른 점이 있다면 변수의 중복을 허락하지 않는다는 점입니다.

let name = '하보니';
console.log(name);
// 결과: 하보니

let 는 var 와 동일하게 변수를 할당할 수 있지만 중복으로 변수를 할당할 경우 아래와 같이 오류가 발생하게 됩니다.

let name = "habony";
let name = "하보니";

console.log(name);
// 결과: Identifier 'name' has already been declared


변수 이름 규칙

변수의 이름을 정할 때 변수의 용도나 의미에 맞게 정의할 필요가 있습니다. 다시 말해 변수의 이름을 보면 이 변수가 어떤 역할의 변수인지 알 수 있도록 하여야 합니다.

  • 변수의 첫 글자에는 영문자이거나 언더라인 (_)으로 시작해야 함.
  • 변수의 첫 글자에는 특수문자나 숫자로 시작할 수 없음.
  • 예약어를 변수 이름으로 사용할 수 없음.
    break, case, catch, continue, default 와 같은 예약어는 사용 불가
  • 자바스크립트는 대소문자를 구분함.




데이터형 타입

자바스크립트에는 7가지 자료형이 존재하는데, 기본 자료형과 객체형이 그것입니다.

기본 자료형

자료형 설 명
Boolean 불리언은 true 나 false 중 하나의 값을 가짐
Null 널 문자는 개발자가 명시적으로 정의한 값
Undefined 선언되지 않았거나 할당되지 않은 변수
Number 산술이 가능한 숫자형
String 따옴표로 감싼 문자열
Symbol 심볼은 변경이 불가능한 값

객체(Object) 형

자료형 설 명
function 함수
array 배열
date 날짜

// 문자열형 타입
// 따옴표로 감싸주면 문자열이 됨.
var a = "문자열";
var b = '문자열';

// 숫자형 타입
var c = 100;
var d = 10.1234;

// 불리언형 타입
var e = true;
var f = false;

// 객체형 타입
var g = {};
var h = {name: "하보니", age:20};
var i = function() {};
var j = array();


심벌(Symbol)

심벌은 변수에 고유한 값을 할당하고, 이렇게 할당된 값은 상수와 같이 변경이 불가능하게 됩니다. 같은 값을 할당하였다고 하더라도 비교 연산자로 비교해보면 다르다는 것을 알 수 있습니다.

<script>
var s1 = Symbol('habony');
var s2 = Symbol('habony');

console.log(s1 == s2);
// false

console.log(typeof s1);
// symbol

console.log(s1.toString());
// Symbol(habony)




var s3 = Symbol();
var s4 = Symbol();

console.log(s3 == s4);
// false
</script>

위 예에서 s1 과 s2, 그리고 s3 과 s4 는 동일한 값이지만 비교 연산을 하면 다른 것으로 간주합니다. 또한 문자열이나 숫자형으로 형 변환은 할 수 없지만 boolean 과 같은 형 변환은 가능합니다.

<script>
var sym = Symbol('habony');

console.log(typeof !!sym);
// boolean
</script>

그 외 상수에 심벌을 할당할 수도 있습니다. 심벌은 이렇게 변수에 값을 한번 할당하게 되면 고유한 값을 만들 수 있습니다.


undefined 과 null 타입

선언하지 않았거나 초기화하지 않았을 때는 undefined, 개발자가 명시적으로 이 변수의 값은 비어 있다는 것을 정의한 것을 null 이 됩니다.

<script>
 // undefined
 var var_name;
 document.write( var_name );
 // 결과: undefined;

 // null
 var null_name = null;
 document.write( null_name );
 // 결과: null
</script>

undefined 와 null 은 값이 비어 있다는 것을 나타내지만 엄연히 다른 자료형입니다. null 또는 undefined를 검사할 때, 동등 연산자(==)와 일치 연산자(===)의 차이를 알아 둘 필요가 있습니다.

<script>
 document.write( typeof null );                             
 // 결과: "object"

 document.write( typeof undefined );     
 // 결과: "undefined"

 document.write( null === undefined );   
 // 결과: false

 document.write( null  == undefined );   
 // 결과: true

 document.write( null === null );        
 // 결과: true

 document.write( null == null );         
 // 결과: true

 document.write( !null );                
 // 결과: true

 document.write( isNaN(1 + null) );      
 // 결과: false

 document.write( isNaN(1 + undefined) ); 
 // 결과: true
</script>




예약어

예약어는 자바스크립트에서 특별한 목적으로 의미를 부여한 구문입니다. 모든 언어에서도 예약어 고유 목적 이외에 사용될 경우 프로그래밍 오류가 발생합니다. 따라서 예약어를 변수명, 라벨명, 함수이름으로 사용할 수 없습니다.

  • abstract
  • arguments
  • boolean
  • break
  • byte
  • case
  • catch
  • char
  • class
  • const
  • continue
  • debugger
  • default
  • enum
  • eval
  • export
  • extends
  • false
  • final
  • finally
  • float
  • for
  • function
  • goto
  • if
  • implements
  • import
  • in
  • instanceof
  • int
  • interface
  • let
  • long
  • native
  • protected
  • public
  • return
  • short
  • static
  • super
  • switch
  • synchronized
  • this
  • throw
  • throws
  • transient
  • true
  • try
  • typeof
  • var
  • void
  • volatile
  • while
  • with
  • yield

다음은 객체나 속성, 그리고 메소드에 관련한 예약어입니다.

  • Array
  • Date
  • eval
  • function
  • hasOwnProperty
  • Infinity
  • isFinite
  • isNaN
  • isPrototypeOf
  • length
  • Math
  • NaN
  • name
  • Number
  • Object
  • prototype
  • String
  • toString
  • undefined
  • valueOf

0 댓글