Javascript 변수의 특이사항
var 의 문제점
- var 예약어를 빠뜨리면 전역변수가 된다.
- 중간에 변수를 재선언 해버리거나, 재할당 해버려서 값을 예측하기 하기 어렵다. > 버그 발생
let 과 const
var : 함수 레벨의 스코프
let, const : 블록 레벨({…})의 스코프
let 도 마찬가지로 예약어를 쓰지 않으면 전역변수
재할당은 가능하지만 재선언할 경우 컴파일 오류 발생
var 의 경우 선언 전에 실행하면 해당 값으로 undefined 를 가지고 있음.
하지만 let 은 선언전에 사용할 수 없음 (=호이스팅이 없음)
const 는 상수 변수(constant variable)
const 는 재선언, 재할당 모두 불가. 블록 레벨의 스코프를 가짐.
자바 스크립트에서 변수 사용시 주의 사항
- 전역변수는 최소화
- var 변수를 사용할 경우 무조건 함수 시작 부분에서 선언할 것.
- for 문 안에서 카운터로 사용되는 변수의 경우 var 를 사용하지 말것.
- ES6 의 경우 let 를 사용할 것.
익명함수 (Anonymous function)
익명함수는 예전 C++에서는 보지 못했었고(한 5년전쯤인데.. 요새는 많이 사용하나?), C#에서는 있었는데 Javascript 에도 익명함수 개념이 있다. (반대로 전파된건가?)
함수명을 사용하지 않고 선언한 변수명으로 사용.
즉시실행함수 (Immediately-invoked function expression)
일반적으로 함수를 선언하고 정의 한 후, 호출하여 사용하는 반면
함수를 정의 하면서 동시에 실행하는 함수.
화살표함수 (Arrow function expression = Lambda)
ES6 부터 =>표기법 (화살표 표기법) 사용 가능.
화살표 함수를 사용하면 간략하게 표현 가능.
일반 함수1
2
3
4
5
6let hi="";
function abc(){
return "hello!";
}
hi = abc();
document.write(hi);
익명 함수1
2
3
4const hi = function(){
return "hello!";
}
document.write(hi.name);
화살표 함수1
2
3
4const hi = () =>{
return "hello!";
}
document.write(hi.name);
화살표 함수 - 중괄호 생략1
2const hi = () => "hello!";
document.write(hi.name);
즉시실행함수 - 매개변수 1개1
2
3(function abc(user){
document.write(user + ", What up~");
})("slim8020");
화살표 함수 - 매개변수 1개1
2let hi = user => { document.write(user + ", what up~"); }
hi("slim8020");
화살표 함수 - 매개변수 2개1
2
3
let sum = (a,b) => a+b;
document.write(sum(1,2));