[ javascript ] 자바스크립트 변수 선언( var, let, const 차이)
페이지 정보
작성자 웹지기 댓글 0건 조회 2,722회 작성일 21-02-09 12:05본문
※ 자바스크립트 변수 선언
- 변수(Variables)는 변하는 데이터(값)를 저장할 수 있는 메모리 공간.
- 변수에 데이터 값은 한개만 저장되므로, 같은 변수를 두번 사용하게 되면 나중에 입력된 변수값으로 저장된다.
- 변수의 첫글자에 사용할 수 있는 문자들은 $, _ (언더바), 영문자 만 사용가능
- 변수 선언시 'use strict'; 선언을 통해 오류를 보여주고 방지하자.
변수선언( var = function-scoped )
var 변수명;
var 변수명 = 값;
변수에 저장 할 수있는 자료형
- 자료형( Data Type ) - typeof 변수 또는 데이터;
예)
<script type="text/javascript">
var num = 100;
var str = "문자";
document.write(typeof num, "<br>"); //number;
document.write(typeof str); //string
</script>
- 문자형 ( String ); - var 변수명 = "사용할 문자나 숫자";
예)
var str = "문자나숫자";
- 숫자형 ( Number ); - var 변수명 = 숫자; 또는 Number("문자형숫자");
예)
var num = 1;
var num2 = Number("1");
- 논리형 ( Boolean ); - var 변수명 = true or false; 또는 Boolean(데이터);
예)
var s = true;
var s = false;
var a = 10 >= 100; //false;
var b = Boolean(0); //false
var n = Boolean('홍길동'); //true
var d = Boolean(null); //false
- 빈값 ( Undefined ); - var 변수명; 또는 var 변수명 = null;
var 로 변수 선언시 중복선언에 대한 문제가 있으므로 이를 보안하기 위해 es2015에서 let, const가 생겼다.
var 은 변수를 hoisting(선언부를 최상위로 끌어올려버리는 것)을 해서 사용하게 해주므로 오류를 발생하지 않게 바꿔버린다.
console.log(a); //오류발생하지 않음.
a = 1; // 오류발생하지 않음.
var a=1;
var a=2;
이러한 문제가 있음.
변수선언( let, const = block-scoped )
사용방법은 var 와 같다.
let은 재할당이 가능한 변수 선언이다.
let a = 1;
let a = 2; //Uncaught SyntaxError : Identifier 'a' has already been declared ( 중복 선언에 대한 오류가 발생 )
a = 2; 는 가능
const는 재할당이 불가능한 변수 선언이다.
const b = 1;
const b = 2; //Uncaught SyntaxError : Identifier 'b' has already been declared ( 중복 선언에 대한 오류가 발생 )
b = 2; //Uncaught SyntaxError : Identifier 'b' has already been declared ( 중복 선언에 대한 오류가 발생 )
- 연산을 할 때 연산하고 싶은 값이 정확히 무엇인지 알고 해야한다.
- 즉, 음수 양수 등의 값을 예상하고 문자와의 연산과 무한대의 연산을 피해야 한다.
const infinity = 1/0; //무한대의 값이 존재한다. //출력값 : Infinity
const negativeInfinity = -1/0; //역시 음수의 무한대 // 출력값 : -Infinity
const nAn = 'not a number' / 2; //출력값 : NaN
null 과 undefined 은 엄연히 다른 값들이다.
let nothing = null; //값이 null로 정의
let x; // 값이 정의 되지 않아 undefined;
특별한 식별자가 필요한 경우 Symbol()로 변수를 사용
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
특별한 식별자로 고유한 값을 가지므로 서로 다르다 그래서 false 가 된다.
console.log(symbol1 === symbol2); //false
이를 동일하게 해주고 싶다면 .for 를 사용해서 동일하게 만들어준다.
const gSymbol1 = Symbol.for('id');
const gSymbol2 = Symbol.for('id');
console.log(gSymbol1 === gSymbol2);
심볼을 출력할 때는 .description 을 이용해서 확인한다.
.description이 없을경우 오류가 발생한다.
console.log(`value : ${gSymbol1.description}, type : ${typeof gSymbol1}`);
※ 번외 console.log 출력시 ` 기호를 사용하면 ${ } 를 이용하여 변수를 적어주어 출력이 가능하다.
const test = {name:'tester', age:10}; //const로 변수를 선언했기 때문에 test라는 object는 변경이 불가능하다
하지만.
test.name = 20; //이런식으로의 접근 변경이 가능하다.
댓글목록
등록된 댓글이 없습니다.