const value1 = false;
const value2 = 4 < 2;
// || (or)
// (비효율)
console.log(`or: ${ value1 || value2 || check() }`); // or: true
// (효율)
console.log(`or: ${ check() || value1 || value2 }`); // or: true
function check() {
for (let i = 0; i < 10; i++)
{
// wasting time
console.log('♠');
}
return true;
}
or 은 앞 부분부터 하나만 true 이면 true 이다.
그렇기 때문에 무거운 함수 부분이 먼저 선언되어 지면 코드의 효율성이 떨어진다.
간혹 주니어 개발자들이 코드 지적을 받는 부분.
check() 함수는 hoisting 되어진다.
const value1 = false;
const value2 = 4 < 2;
// && (and)
// (비효율)
console.log(`and: ${check() && value1 && value2}`); // and: false
// (효율)
console.log(`and: ${value1 && value2 && check()}`); // and: false
function check() {
for (let i = 0; i < 10; i++)
{
// wasting time
console.log('♠');
}
return true;
}
and는 앞 부분부터 하나만 false 이면 false 이다.
그렇게 때문에 무거운 함수 부분이 먼저 선언되면 코드의 효율성이 떨어진다.
check() 함수는 hoisting 되어진다.
if(nullableObject != null)
{
nullableObject.something; // something은 객체(함수)의 변수값
}
// object가 null이 아니여 야지만 뒤에오는 객체(함수)가 가지는 변수를 가져올 수 있다.