WEB/Java Script

[Java Script] 논리연산자 && and 연산자/ || or 연산자 에서 truthy와 falsy/

자바칩 프라푸치노 2021. 4. 23. 21:35

논리연산자를 사용할때 꼭 true나 false를 사용하지 않아도 된다

truthy한 값이나 falsy한 값을 사용해도된다.

const dog ={
  name : '멍멍이'
};

function getName(animal){
  if(animal){
    return animal.name;
  }
  return undefined;
}

const name = getName(dog);
console.log(name);

이렇게 코드를 작성해주었다.

getName이라는 function이 있는데 파라미터로 아무것도 적지 않으면 undefined를 리턴하겠다 이다.

const dog ={
  name : '멍멍이'
};

function getName(animal){
  return animal && animal.name;
}

const name = getName();
console.log(name);

그런데 똑같은 코드로는 이렇게 작성하면 된다.

그러니까 getName에 파라미터로 아무것도 안넣으면 위와 같이 undefined가 나온다는 것이다.

 

어떻게 같은 값이 나오는가?

console.log(true && 'hello');
console.log(false && 'hello');
console.log('hello' && 'bye');

이렇게 논리 연산자를 보면 &&연산자일때 둘다 true이거나 truthy인 값이면 뒤에 값이 나온다.

만약에 앞에 있는 값이 false이거나 falsy한 값이면 결과는 앞에 있는 값이 나온다.


이제 || 연산자를 보자 or연산자

 

const namelessDog ={
  name:'',
};

function getName(animal){
  const name = animal && animal.name;
  if(!name){
    return '이름이 없는 동물입니다.';
  }
  return name;
}

const name = getName (namelessDog);
console.log(name);

 

 

이렇게 getName이라는 함수를 설정해주었는데 

이름이 없으면 이름이 없는 동물입니다가 나오고 있으면 name이 나오게 했다.

const namelessDog ={
  name:'',
};

function getName(animal){
  const name = animal && animal.name;
  return name || '이름이 없는 동물입니다';
}

const name = getName (namelessDog);
console.log(name);

간단하게 해보자면 

name || '이름이 없는 동물입니다' 라고 적으면 된다.

이것이 어떻게 나오는가

 

 

 

console.log(false || 'hello');
console.log('나다' || false);

위의 &&연산자 처럼 이것도 falsy인 값과 truthy한 값이 있으면

여기서는 truthy한 값이 무조건 나온다.

 

 

 

 

728x90