[TIL] 03. Javascript 2

Danbi Cho·2020년 3월 25일
0

TIL

목록 보기
3/20

1. 논리 연산자 (Logical Operators)

true와 false를 처리하기 위한 연산자 / 조건 문에서 유용하게 사용

NOT !

true -> false로, false -> true로 반전시킨다.
앞에 !를 붙여 표현한다.

const a = !true;
console.log(a); // false
const a = !false;
console.log(a); // true

AND &&

양 옆의 boolean이 true일 때만 결과가 true

const a = true && true;
console.log(a); // true
const a = false && true;
console.log(a); // false
const a = true && false;
console.log(a); // false
const a = false && false;
console.log(a); // false

OR ||

둘 중의 하나의 boolean이 true일 때 true

const a = true || true;
console.log(a); // true
const a = false || true;
console.log(a); // true
const a = true || false;
console.log(a); // true
const a = false || false;
console.log(a); // false

!(true && false || true && false || !false);
// !(true && false || true && false || true)
// !(false || false || true)
// !(true)
// false

2. 함수 - 데이터 받기

기본적인 정의 및 실행

function alertSuccess() {
	alert("로그인 성공!");
}

위에서 함수는 정의했지만, alert는 실행되지 않았다.
함수를 호축하기 전까지 함수 내부(body)는 실행되지 않기 때문

alertSuccess();

함수 이름과 ( )를 사용하여 함수를 호출해야 alert 창이 나타난다.

데이터(인자, argument) 전달하기

함수에서 정해진 값이 아니라 그때그때 바뀌는 값을 출력하기 위해서는 함수를 호출할 때 데이터를 전달하고, 전달받은 함수를 사용하면 된다.

데이터를 전달 받는 함수

function alertSuccess(msg) {
	alert(msg);
} 

함수의 호출 (데이터 전달)

alertSuccess("김개발님 로그인 성공!");
alertSuccess("박사장님 로그인 성공!");

데이터를 전달 받는 함수의 재정의
중복 되는 부분을 줄이는 방법으로 함수를 재정의

function alertSuccess(name) {   
  alert(name + "님 로그인 성공!"); 
}

function alertSuccess(name) {
  let name = "wecode";
  alert(name + "님 로그인 성공!");
} 

위와 같이 함수를 작성 하면 Duplicate declaration "name"라는 에러가 발생한다.

함수 내부에서 인자로 받은 변수에 새로운 값을 넣을 수 없다
(parameter인 인자에 어떤 데이터가 전달될지는 함수를 호출할 때 결정 되기 때문)


parameter(매개변수)와 argument(인자)

parameter(매개변수)
함수 선언식의 ( ) 안에 넣는 변수명
실제로 함수 안쪽에서 변수와 같은 역할 / 함수가 호출될 때 값을 전달 받으면 매개변수에 값이 정의 된다

argument(인자)
함수를 호출하면서 ( ) 안에 어떤 값 또는 값이 정의된 변수
함수에서 매개변수가 있응 상태면, 호출시 인자로 전달한 값은 매개변수를 통해 사용 가능

function halfNumber(myNumber1) { // myNumber1 이라는 매개변수
  console.log('halfNumber',myNumber1);
  return myNumber1 / 2;
}
halfNumber(50); // 50을 인자로 받는다
function halfAndAddNumber(myNumber2) {
  console.log('halfAndAddNumber',myNumber2); // 40
  let result = halfNumber(myNumber2); // 위에서 만든 함수를 호출, 인자로 받은 40, 20을 return
  return result+1; // 21
}
halfAndAddNumber(40); // 40을 인자로 받는다.

여러 인자

함수를 3개 전달 받아 아래와 같은 결과를 내야 하는 문제

meetAt(2022); // 결과 --> "2022년"
meetAt(2032, 3); // 결과 --> "2032년 3월"
meetAt(1987, 10, 28); // 결과 --> "1987/10/28"

function meetAt(year) {
	return (year + "년");
} 
function meetAt(year, month) {
    return (year + "년 " + month + "월");
} 
function meetAt(year, month, day) {
	return (year + "/" + month + "/" + day);
} 

처음에 if문을 생각했지만 조건을 어떻게 해야할지 감이 오지 않아서 위와 같이 같은 이름의 함수를 매개변수의 개수만 다르게 해서 함수를 만들었다. 이렇게 하면 제일 아래에 선언한 함수가 같은 이름의 함수를 덮어씌우기 때문에 결과가 제대로 나오지 않는다.

function meetAt(year, month, day) {
  if (month === undefined && day === undefined) {
    return (year + "년");
  } else if (day === undefined) {
    return (year + "년 " + month + "월");
  } else {
    return (year + "/" + month + "/" + day);
  } 
} 
//meetAt(1989);
//meetAt(1989, 8);
meetAt(1989, 8, 20);

위와 같이 하면 결과가 제대로 나온다. 인자가 매개변수에 하나씩 들어가는데 인자의 개수가 매개변수 보다 적으면 나머지는 undefined가 되고, 인자의 개수가 매개변수 보다 많으면 나머지는 무시한다.

return 키워드

함수는 모두 return을 한다.
return 키워드 생략 가능 / return을 생략하면 함수는 undefined를 반환

함수 내부에서 다른 함수 호출하기

function getTax(price) {
  return price * 0.1;
}
function calculateTotal(price) {
  return price + getTax(price);
}
var result = calculateTotal(3500);
console.log(result);

위의 코드 처럼 함수 내부에서 다른 함수 호출도 가능하다. calculateTotal(3500)로 함수를 호출 했을 때 함수가 실행 된다.

profile
룰루랄라! 개발자 되고 싶어요🙈

0개의 댓글