일반적인 언어와 달리 javacript 의 특이하게 동작하는 케이스가 있어서 명확한 이해가 필요
console.log(a);
a = 1o;
console.log(a);
var a = 20;
var a;
console.log(a);
a = 10;
console.log(a);
a = 20;
getData();
function getData() {
console.log("hellow world");
}
function getData() {
console.log("hello world");
}
getData();
// 함수 선언문
function getData() {
console.log("hello world");
}
//함수 표현식
let getData = function() {
console.lo("hello world");
}
getData();
let getData = funcion() {
console.log("hello world");
}
왜 기본 과정에서 var 키워드를 알아냐 하면 기존에 작성된 상당량의 코드들이 var 키워드로 사용하고 함수는 아직도 유사한 현상을 볼수 있기 때문
블록 또는 함수 안에서 선언되지않고, 외부에서 선언된 변수/함수로 함수 또는 블록 포함 모든 코드에서 사용가능
{
const name = 'jin';
console.log(name);
}
console.log(name) //undefined 또는 에러
let name = 'jin';
{
console.log(name);
}
console.log(name);
{
let name = 'jin';
{
console.log(name);
}
}
console.log(name); // name이 선언된 블록 밖에 있기 때문에, unsefined 또는 에러
const item1 = 1;
if (item1 === 1) {
let item2 = 2;
console.log(item2);
}
console.log(item2); //item2 가 선언된 블록 밖에서 호출했으므로, undefined 에러
var name = 'jin';
function getName() {
console.log(name);
function showMsg() {
console.log('hello');
}
}
getName();
showMsg(); //함수 외부에서 호출했으므로, 에러
console.log(name);
var name = 'jin';
function func() {
console.log(name); //블록 안에서도 정상 동작
}
func();
console.log(name)
function func() {
var name = 'jin';
console.log(name);
}
func();
console.log(name);
{
var name = 'jin';
console.log(name);
}
console.log(name); // let, const 에서는 에러, var에서는 정상 동작
함수에서 선언된 변수를 지역 변수라고 하며, 전역 socpe를 가진 변수를 전역 변수라고 이야기함
var name = 'jin';
function get_name() {
var name = 'jin';
console.log(name);
}
get_name();
console.log(name);