실행 컨텍스트에 대해 알아보겠습니다. 실행 컨텍스트란 간단하게 코드가 실행되는 환경이라고 할 수 있습니다. 실행 컨텍스트는 전역 컨텍스트와 함수 컨텍스트로 구분됩니다. var a = "A" function func1(){ console.log(a); } function func2(){ var a = "D" func1(); } func2(); //"A" 코드를 실행하면 전역 컨텍스트가 생성되고, 함수 호출 시 함수 컨텍스트가 생성됩니다. 컨텍스트 생성 시 안에 변수객체(arguments, variable), scope chain, this가 생성됩니다. 컨텍스트 생성 후 함수가 실행되는데, 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾습니다. 함수 실행이 마무리되면..
자바스크립트에서의 this에 대해 알아보겠습니다. 기본적으로 자바스크립트에서 this는 전역 객체인 window 입니다. console.log(this); //Window 위와 같이 window 객체가 출력됩니다. 함수를 선언하고 호출 해 보겠습니다. function thisCheck(){ return this; } console.log(thisCheck()); //Window 다음은 객체에 메소드를 만들고 호출했을때의 결과 입니다. const obj = { thisCheck: function(){ return this; } } console.log(obj.thisCheck()); //obj this는 obj 객체가 됩니다. 메서드를 변수에 저장하고 실행 시 어떻게 되는지 확인 해 보겠습니다. const..
자바스크립트에서는 해당 데이터를 완전히 복사하는 깊은복사와 데이터의 위치를 참조하는 얕은 복사가 있습니다. String, Number, Boolean 타입의 자료형 값을 복사 할 때와 객체를 복사 할 때 각각 다르게 복사가 됩니다. 자료형의 복사 자바스크립트에서 자료형의 값을 복사 할 때는 독립적으로 해당 값을 완전히 복사하는 깊은 복사가 일어납니다. 예제입니다. var value = 10; var copyValue = value; value = 20; console.log(value); //20 console.log(copyValue); //10 각각 독립된 데이터로 다른 값을 출력합니다. 객체의 복사 객체를 복사 할 때는 해당 객체가 저장된 메모리의 위치값을 참조하게 되는 얕은 복사가 일어납니다. 예..
논리 연산자는 ||(OR), &&(AND), !(NOT)이 있습니다. 논리연산자는 피연산자의 Boolean 값에 따라 결과를 반환합니다. ||(OR) OR 연산자는 | 두개로 작성합니다. 피연산자 둘 중 하나라도 ture 일 때 true를 반환합니다. 예시입니다. true || true //true false || true //true false || false //false "Dog" || "Cat" //Dog null || 2 //2 2 3 //true 왼쪽에서 부터 값을 비교하여 true 일 경우에 해당 값을 반환합니다. &&(AND) AND 연산자는 & 두개로 작성합니다. 피연산자 둘 다 ture 일 때 true를 반환합니다. 예시입니다. true && true //true t..
자바스크립트에서는 원시 타입을 제외한 모든 값이 객체입니다. 객체는 가장 많이 쓰이고 중요한 데이터 타입이며, 리터럴과 생성자 함수를 이용해 만들 수 있습니다. 원시 타입 데이터 Number String Boolean undefined null 객체 리터럴 다음 코드는 리터널 형태로 객체를 생성하였습니다. var person = { name : "Ongyee", age : 30, } person이라는 객체를 생성하고 name, age라는 속성과 각각 Ongyee, 30의 속성값을 작성했습니다. 이렇게 작성한 객체는 다음과 같이 값을 읽을 수 있습니다. console.log(person.name) //Ongyee console.log(person.age) //30 객체를 읽는 것과 같은 방법으로 객체 안의..
undefined와 null에 대해 알아보겠습니다. 둘다 값이 없다는것을 나타내지만 어떤 값이 없느냐에 따라 다르다고 할 수 있습니다. console.log(undefined == null); //true 값을 출력한다. console.log(undefined === null); //false 값을 출력한다. 비교연산자를 통해 보면 값은 같지만 데이터형이 다르다는것을 알 수 있습니다. undefined는 변수를 정의 하고 값을 초기화 하지 않았을때 반환됩니다. var test; console.log(test); //undefined를 반환한다. undefined는 원시 데이터 타입의 정의되지 않은 값을 나타냅니다. null은 객체 타입의 정의되지않은 값을 나타냅니다. 다음은 변수를 null로 초기화 했을..
apply와 call 메소드에 대해 알아보겠습니다. 두 메소드 모두 다른 함수를 호출할수 있는 메소드 입니다. 기본적으로 함수를 호출하는 방식입니다. function func(num1, num2){ console.log(num1 + num2); } func(1,2); //3 다음은 call 메소드를 사용하여 함수를 호출했습니다. function func(num1, num2){ console.log(num1 + num2); } func.call(null,1,2); //3 call 메소드를 사용해도 출력되는 값은 똑같습니다. 그렇다면 왜 apply,call 메소드를 사용할까요? call 메소드의 구문은 이렇습니다. func.call(thisObj,arg1,arg2...); func - 호출할 함수 thisO..
