var x = 30;
function get() { return x; }
function set(value) {var x = value;}
set(10);
var result = get(20);
여기서 정답은 10이 아니라 30이다.
왜냐?
var의 스코프는 함수범위(Function Scope)이기 때문이다.
var 키워드의 스코프를 전역범위(Global Scope)로 착각하지 말 것.
그렇다면 정답이 10이 되려면 어떻게 해야 할까?
set 함수에서 x를 var로 선언하지 말고 바로 x = value라고 입력하면 된다.
이러면 처음에 선언했던 x가 전역변수로 취급되어 값이 value로 바뀌게 된다.
'JavaScript' 카테고리의 다른 글
number - string(num)의 결과는? - Javascript (0) | 2020.09.16 |
---|---|
함수를 리턴할 때 ()의 유무의 차이 - Javascript (0) | 2020.09.16 |
함수에서 매개변수(parameters)와 전달인자(arguments) - Javascript (0) | 2020.09.16 |
객체(Object)의 표현과 추가 제거 - Javascript (0) | 2020.09.14 |
배열(Array)의 추가 제거 - Javascript (0) | 2020.09.14 |