제어 구문

YangJiWon·2020년 8월 28일
0

모던 자바스크립트 입문을 정리한 내용입니다.

if 문 주의사항

중첩 if문 else가 어디에 해당하는지 잘 확인하기

if ( a > b )
  if ( a > c )
    console.log("a가 제일 크다");
else
  console.log("a는 b 이하");
  • else가 if ( a > b )와 호응하는 것처럼 보이지만, else 절은 가장 가까운 if에 호응하므로 실제로는 다음과 같이 해석 됩니다.
if (a > b) {
  if (a > c) {
    console.log("a가 제일 크다");
  }
  else {
    console.log("a는 b 이하");
  }
}

javascript switch

  • 자바스크립트의 switch문은 c와 java와 다르게 case에 표현식을 작성할 수 있습니다.
  • 하지만 표현식을 쓰면 알고리즘을 파악하기 어려워질 수 있으므로 숫자 리터럴 또는 문자열 리터럴을 사용하는 편이 좋습니다.

뉴턴-랩슨 방법을 do-while로 구현

  • 뉴턴-랩슨 방법을 사용하여 제곱근을 소수점 아래 열 자리까지 구해볼 것입니다.
  • 뉴턴-랩슨 방법은 방적식 f(x) = 0의 근사해를 점진적으로 구하는 방법입니다.
  • x라는 해가 있다고 가정하고 x 근처의 적당한 값으로 x0을 잡습니다. x0의 함수 f(x)의 접선과 x축의 교점을 구하여 x1이라고 합니다. 그다음 x1의 함수 f(x)의 접선과 x축의 교점을 구하여 x2라고 합니다.
  • 이를 계속 반복하면 수열 {xn}을 구할 수 있는데 xn부터 x(n+1)까지는 다음 점화식으로 구할 수 있습니다.
    xn+1 = xn - f(xn)/f'(xn)
  • x0를 적절하게 고르면 수열 {xn}은 n의 증가와 함께 x라는 해에 빠른 속도로 접근합니다.
  • 특별히 a의 제곱근을 뉴턴-랩슨 법으로 구하려면 f(x)= x^2 - a로 해 둡니다. 이때 f'(X) = 2x 이므로 이전의 점화식을 다음과 같이 정리할 수 있습니다.
    xn+1 = xn - (xn^2 - a) / 2xn
var EPSILON = 1.0e - 10;
var d, xnew, xold;
var a = parseFloat(prompt("정수를 입력하십시오"));
xold = (a > 1) ? a : 1.0;
do { 
  xnew = xold - (xold * xold - a) / (2.0 * xold)
  d = (xold - xnew) / xold;
  xold = xnew
} while ( d > EPSILON);
document.write("sqrt(" + a + ") =" + xnew);

for/in

for (변수 in 객체 표현식) 문장
for/in문이 실행되면 먼저 객체 표현식을 평가합니다.
객체 표현식이 null 또는 undefined로 평가되면 for/in 문을 빠져나와 다음 작업으로 이동합니다.

var obj = {a:1, b:2, c:3};
for (var p in obj ) {
  console.log("p = " + p);
}
/*
p = a
p = b
p = c
*/
var obj = {a:1, b:2, c:3};
for (var p in obj ) {
  console.log("obj. = " + p + " = " + obj[p]);
}
/*
obj.a = 1
obj.b = 2
obj.c = 3
*/
profile
데이터데이터데이터!!

0개의 댓글