그냥 단순히 팝업을 띄우는 javascript 코드를 짜달라고 부탁했다. 그리고 다됏다길래 ctrl+cv 하고 사용하자마자 값이 이상해지기시작...

알고보니 변수 선언을 var로 하지 않고 바로 썻다...(라임이 맞네?ㅋㅋ)

var로 변수 선언을 하지 않을 경우 scope rule을 따르지 않고 암시적으로 global variable이 되어버리는 문제를 간과한 경우라고 볼 수 있다.

변수 선언시 꼭 var를 사용하도록 하자!

 

이를 제한하는 방법이 한가지 있는데 "use strict"; 이라는 키워드이다. 이는 EXMAScript 5에 추가되었던 기능으로 strict mode 사용시 폐지예정의 기능이나 권장되지 않는 기법의 동작에서 에러 또는 예외가 발생합니다.

 

그래서 "use strict";를 키워드를 명시하고 var없이 변수선언하면 에러가 발생합니다. 그리고 "use strict";는 scope rule을 따르기 때문에 지역 선언시 해당하는 scope에서만 "use strict"; 규칙이 적용됩니다.

Posted by duehd88
,