경우의 수를 테스트하는 Testbuilder를 배웠다. 마지막 과제는 정말.. 잠을 못자게 하는 과제다..
'버그를 잡는다'는 의미로, 코드에서 버그를 찾아 제거 및 수정하는 것을 의미
결과가 이상하다면?
내가 예상한 결과가 아닐 경우
테스트 방법
경우의 수를 정리
경우의 수에 하나씩 기대값과 실제값을 비교
→ 유닛 테스트
→ 이러한 개발 방법론을 테스트 주도 개발이라고 부른다.
코드를 작성하기 전에 테스트를 하는 방법론, 개발자가 생각하는 코드의 결과를 미리 정의하고, 이를 바탕으로 코드를 작성하는 방법
장점
단점
속도때문에 TDD를 하는 사람들이 적지만, TDD 작성은 기본
Class
)을 만들고, 그 청사진을 바탕으로 한 객체(Instance
)를 만드는 패턴function Car(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
Car.prototype.engineStart = function() {
...
}
Car.prototype.drive = function() {
...
}
}
//instance 생성
let covec = new Car('Volvo', 'XC90', 'Grey');
class
라는 키워드를 이용해 정의할 수도 있다.class Car {
constructor(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
engineStart() {
...
}
drive() {
...
}
}
//instance 생성
let covec = new Car('Volvo', 'XC90', 'Grey');
클래스를 만들 때 쓰는 원형 객체
쓰는 이유
function volvoCar(name) {
this.brand = 'Volvo';
this.name = name;
this.wheel = 4;
Car.prototype.engineStart = function() {
console.log(`${this.name}의 시동이 켜졌습니다.`);
}
Car.prototype.drive = function() {
...
}
}
let covec = new Car('Volvo', 'XC90', 'Grey');
let poliac = new Car('Volvo', 'XC60', 'Black');
console.log(covec.brand); // 'Volvo'
console.log(poliac.brand); // 'Volvo'
brand나 wheel은 똑같은데 메모리에는 brand, wheel이 두 개씩 총 네 개가 할당된다. 만약 1000 개의 인스턴스라면?.. 그렇기에 prototype을 이용한다.
function volvoCar(name) {
volvoCar.prototype.brand = 'Volvo';
this.name = name;
volvoCar.prototype.wheel = 4;
Car.prototype.engineStart = function() {
console.log(`${this.name}의 시동이 켜졌습니다.`);
}
Car.prototype.drive = function() {
...
}
}
prototype을 설정해준다면 인스턴스는 객체에 어딘가 메모리 상에 존재하는 volvoCar.prototype이라는 객체에 넣어놓은 brand와 wheel을 공유하는 것이다.
만약 argument의 길이가 유동적?
parameter에 default parameter를 넣어주고 싶은 경우
function multi(a, b == 5) {
return a * b;
}
multi(5); // 25
배열과 객체, 함수는 값이 저장되는게 아닌 주소값을 저장한다.
즉 같은 객체를 할당받고 다른 객체가 그 객체의 값을 수정하면 다른 객체도 값이 변경된다.
console.log([1,2,3] === [1,2,3]); //false, 서로 주소값이 다르기때문에..
console.log({name = 'chan'} === {name = 'chan'}); //false
var multi = function() {
let str = 599;
return function(y) {
return 5 * str; //str의 값을 가져올 수 있기에 closure
}
}
var multi2 = function(x) {
return function(y) {
return x * y; //x 값을 가져올 수 있어서 closure
}
}
참조 링크