js 깊게 알기
let a = 1;
a = b;
b = 2;
a; // 1로 기존데이터 변경이 안됨
let e = [10,20];
e=f;
f[0] = 50;
e = [50,20]
//문제 : greetSomeone()과 firstName 실행의 결과는?
//Global Scope시작
let greeting = 'Hello';
//Local Scope시작
function greetSomeone() {
let firstName = 'Josh';
return greeting + ' ' + firstName;
} //Local Scope끝
greetSomeone(); // 'Hello Josh'
firstName; // ReferenceError
// Glocal Scope 끝
firstName접근을 할 수 없어서 참조할 수 없는 error가 나왔다.
firstName변수는 Local Scope영역에서만 사용가능하다.
-지역변수는 본인의 scope안에서만 사용가능하며, 전역변수는 어디든 사용이 가능하다.
-지역변수는 함수 내에서 전역변수보다 우선순위를 가진다.
-함수 안에 함수를 넣을 수 있음.
-let은 block{}단위로 범위사용이 가능하기 때문에 var사용보다 지향한다.
-var키워드는 block넘어가도 범위 사용 가능.(범위가 명확하지않아 사용을 지양)
-const키워드는 constant의 줄임말로 값이 변하지 않는 상수이다. let키워드와 동일하게 block scope를 따르지만 값을 재정의할 수 없고 재정의하려면 TypeError가 발생한다.
'use strict;
function outerFn() {
let outerVar = 'outer';
console.log(outerVar);
function innerFn() {
let innerVar = 'inner';
console.log(innerVar);
}
return innerFn;
}
let globalVar = 'gloval';
let innerFn = outerFn();
innerFn();
function addeer(x) {
return function(y) {
return x+y;
}
}
adder(2)(3); //5
let add100 = adder(100); // x의 값을 고정해놓고 재사용 가능.
add100(2); // 102
add100(10); //110
let add5 = adder(5);
add5(2); //7