개요

반복문 루프 변수, 수집 변수 같이 값을 여러 대입할 밖에 없는 경우를 제외하고, 변수는 번만 값을 대입해야 한다.

 

대입이 이상 이뤄진다면 여러 가지 역할을 수행한다는 신호다.

 

예시



function distanceTravelled(scenario, time){
    let result;
    let acc = scenario.primaryForce / scenario.mass;//가속도=/질량
    let primaryTime = Math.min(time, scenario.delay);
    result = 0.5 * acc * primaryTime * primaryTime; // 전파된 거리
    let secondaryTime = time - scenario.delay;
    if(secondaryTime > 0){
        let primaryVelocity = acc * scenario.delay;
        acc = (scenario.primaryForce + scenario.secondaryForce) /scenario.mass;
        result += primaryVelocity * secondaryTime + 0.5 * acc * secondaryTime *secondaryTime;
    }
    return result;
}
acc 변수가 가지 역할을 하고 있다.
하나는 번째 힘이 유발한 초기 가속도 저장
다른 하나는 번째 힘까지 반영된 가속도 저장


function distanceTravelled(scenario, time){
    let result;
    //불변으로 정의
    const primaryAcceleration = scenario.primaryForce / scenario.mass;
    let primaryTime = Math.min(time, scenario.delay);
    result = 0.5 * primaryAcceleration * primaryTime * primaryTime;
    let secondaryTime = time - scenario.delay;
    if(secondaryTime > 0){
        let primaryVelocity = primaryAcceleration * scenario.delay;
        //별도 변수
        let acc = (scenario.primaryForce + scenario.secondaryForce) /scenario.mass;
        result += primaryVelocity * secondaryTime + 0.5 * acc * secondaryTime *secondaryTime;
    }
    return result;
}


function distanceTravelled(scenario, time){
    let result;
    const primaryAcceleration = scenario.primaryForce / scenario.mass;
    let primaryTime = Math.min(time, scenario.delay);
    result = 0.5 * primaryAcceleration * primaryTime * primaryTime;
    let secondaryTime = time - scenario.delay;
    if(secondaryTime > 0){
        let primaryVelocity = primaryAcceleration * scenario.delay;
        //불변으로 정의
        const secondaryAcceleration = (scenario.primaryForce + scenario.secondaryForce) /scenario.mass;
        result += primaryVelocity * secondaryTime + 0.5 * secondaryAcceleration * secondaryTime *secondaryTime;
    }
    return result;
}

 

예시: 입력 매개변수의 값을 수정할



function discount(inputValue, quantity){
    if(inputValue > 50) inputValue = inputValue - 2;
    if(quantity > 100) inputValue = inputValue - 1;
    return inputValue;
}


function discount(originalInputValue, quantity){
    //call by value 로 가정, 값을 복사해서 쓴다.
    let inputValue = originalInputValue;
    if(inputValue > 50) inputValue = inputValue - 2;
    if(quantity > 100) inputValue = inputValue - 1;
    return inputValue;
}


function discount(inputValue, quantity){
    //적절한 이름으로 변경
    let result = inputValue;
    if(inputValue > 50) result = result - 2;
    if(quantity > 100) result = result - 1;
    return result;
}

 

+ Recent posts