본문 바로가기

js 이론5

[js] 전역 변수의 사용을 억제하는 방법 - 즉시 실행 함수, ES6모듈 딥다이브 14장 전역변수의 문제점 전역 변수의 사용을 억제하는 방법 - 즉시 실행 함수 var counter = (function () { var num = 0; return { increaseNum() { return ++num; }, decreaseNum() { return --num; }, getNum() { return num; }, setNum(newNum) { num = newNum; console.log(num); } }; }()); 여기서 counter.num을 출력하면 무엇이나올까요? 만약 counter.num에 값을 할당하면 어떻게 될까요? counter의 num에 300이 할당된것처럼 보입니다. 그렇다면 num은 private member가 아닌걸까요? 위에 작성한 동일한 즉시실행함수.. 2021. 10. 9.
객체 리터럴 Object 생성자함수 - MDN 참고 const person = new Object({ 'firstName': 'Hong Jung', 'last-name': 'Kim' }); const person = new Object(); person.firstName = 'hong jung'; person.lastName = 'Kim'; Object.create() function Person() { this.firstName = ''; this.lastName = ''; } Person.prototype.naming = function(a, b) { this.firstName = a; this.lastName = b; console.log('naming'); }; function Student() { Perso.. 2021. 9. 17.
자바스크립트 연산자 Math.pow() pow는 Math의 static method이므로 Math객체를 생성하여 생성된 객체의 method를 사용하지 않고 Math.pow()로 사용합니다. (MDN참고) 거듭제곱(**) 밑을 음수로 하는 경우 다음과 같은 오류가 나서 괄호를 해야합니다. 이항 연산자보다 우선순위가 높습니다. ** 와 Math.path()의 차이점은 **은 BigInt도 피연산자가 될 수 있는 점입니다. (MDN참고) BigInt는 Number 값이 안정적으로 나타낼 수 있는 최대값인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체입니다. (MDN참고) 연쇄할당 다음과 같이 연쇄적으로 할당할 수 있습니다. NaN은 자신과 일치하지 않는 값으로 평가합니다. 그리고 자바스ㅡ립트에는 +0과 -0이 있는데 .. 2021. 9. 11.
자바스크립트 변수 값의 재할당 과정 var temp temp = 100 temp = 200 위와 같은 코드의 재할당 과정은 어떻게 될까요? 변수 선언시 이전에 남아 있는 값이 그대로 있는 주소값을 가지고 그 주소값에 100의 값을 할당할까요? 재할당시에도 그 주소값에 200이 할당할까요? 이런식으로 생각하셨다면 C언어를 공부하셨을것 같습니다. 아니면 그 외의 저수준 언어일것 같습니다. 하지만 자바스크립트는 다른 재할당 과정을 거칩니다. 변수 선언단계에서 변수 이름을 등록합니다. 이는 실행컨텍스트에 등록됩니다. 자바스크립트 엔진은 실행 컨텍스트를 이용하여 식별자와 스코프를 관리합니다. 그렇다면 변수 이름과 값은 어떤 형식으로 등록될까요? 키,값 형식인 객체로 등록되어 관리됩니다. 아직 값을 할당하지 않았기에 메모리 공간이 .. 2021. 9. 4.