JavaScript 10 — 논리 연산자
부울 논리
부울 논리는 true 및 false 값을 처리하는 논리 시스템입니다. 프로그래밍에서 부울 논리는 결정을 내리고 프로그램 흐름을 제어하는 데 광범위하게 사용됩니다.
부울 논리의 세 가지 주요 논리 연산자는 AND, OR 및 NOT입니다.
- AND : AND 연산자는 두 피연산자가 모두 true인 경우에만 true를 반환합니다.
- OR : OR 연산자는 피연산자 중 하나 또는 둘 다 참이면 참을 반환합니다.
- NOT : NOT 연산자는 주어진 피연산자의 반대를 반환합니다.
코드의 논리 연산자
&&JavaScript에는 (AND), ||(OR) 및 !(NOT)의 세 가지 논리 연산자가 있습니다 . 이러한 연산자는 종종 JavaScript에서 부울 값을 결합하고 조작하는 데 사용됩니다.
&&(AND) 연산자
연산자 는 두 피연산자가 모두 이면 &&반환 하고 그렇지 않으면 반환합니다. 여기 몇 가지 예가 있어요.truetruefalse
// Normal examples
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
// Type coercion examples
console.log("hello" && 42); // 42
console.log("" && 42); // ""
- 연산자
&&는 첫 번째 피연산자가 참인 경우에만 두 번째 피연산자를 평가하기 때문에 단락 연산자로 알려져 있습니다. 이것은 코드를 최적화하고 오류를 피하는 데 유용할 수 있습니다.
연산자 는 피연산자 중 하나 이상이 이면 ||반환 하고 그렇지 않으면 반환합니다. 여기 몇 가지 예가 있어요.truetruefalse
// Normal examples
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
// Type coercion examples
console.log("" || "hello"); // "hello"
console.log(0 || 42); // 42
- 연산자
||는 또한 첫 번째 피연산자가 false인 경우에만 두 번째 피연산자를 평가하는 단락 연산자입니다. - 연산자
||는 에서와 같이 변수에 대한 기본값을 제공하는 데 자주 사용됩니다const value = input || defaultValue;.
연산자 !는 부울 값을 부정하고 true피연산자가 이고 false피연산자 false가 이면 반환합니다 true. 여기 몇 가지 예가 있어요.
// Normal examples
console.log(!true); // false
console.log(!false); // true
// Type coercion examples
console.log(!"hello"); // false
console.log(!undefined); // true
- 연산자
!는 에서와 같이 두 번 부정하여 값을 부울 유형으로 변환하는 데 사용할 수 있습니다!!value.
논리 연산자의 순서
논리 연산자의 순서는 여러 조건을 평가해야 하는 일부 경우에 차이를 만들 수 있습니다. 여기 몇 가지 예가 있어요.
연산자 우선 순위: 논리 AND( &&)는 논리 OR( )보다 우선 순위가 높습니다 ||. 이는 가 &&이전에 평가되고 ||조건의 결과를 변경할 수 있음을 의미합니다. 예를 들어:
// This condition will evaluate to true
if (true || false && true) {
// do something
}
// This condition will evaluate to false
if ((true || false) && true) {
// do something
}
두 번째 예에서는 가 (true || false)먼저 평가되어 결과가 입니다 true. 그런 다음 true && true평가되며 결과는 true. 전체 조건도 참이지만 괄호 때문에 다르게 평가됩니다.
단락 평가: 논리적 AND( &&) 및 논리적 OR( ||)은 단락 평가를 사용합니다. 즉, 두 번째 피연산자는 필요한 경우에만 평가됩니다. 예를 들어:
// This condition will evaluate to true without an error
if (x !== null && x.property === "value") {
// do something
}
// This condition will throw an error
if (x.property === "value" && x !== null) {
// do something
}
두 번째 예에서 if xis 에는 null속성 이 없기 x.property때문에 오류가 발생합니다 . null두 번째 피연산자는 첫 번째 피연산자보다 먼저 평가되므로 주의해서 사용하지 않으면 오류가 발생할 수 있습니다.
부정: 논리 NOT( !)은 조건을 부정하여 조건의 결과를 변경할 수 있습니다. 예를 들어:
let x = true;
// This condition will evaluate to false
if (!x) {
// do something
}
// This condition will evaluate to true
if (!!x) {
// do something
}
초보자로서 논리 연산자의 순서에 주의를 기울이고 필요한 경우 괄호를 사용하여 순서를 명확히 하는 것이 중요합니다. 단락 평가와 오류를 방지하는 방법을 이해하는 것도 중요합니다. 부정은 조건을 읽고 이해하기 어렵게 만들 수 있으므로 주의해서 사용해야 합니다.
실제 사례
다음은 코드에서 사용되는 논리 연산자의 몇 가지 현실적인 예입니다. 예제를 읽고 논리를 이해할 수 있는지 확인하십시오. 아직 함수에 대해 논의하지 않았으므로 이해할 수 없다고 낙담하지 마십시오!
사용자 입력 확인:
function validateInput(input) {
const isString = typeof input === 'string';
const isNotEmpty = input !== '';
const isLessThanTenChars = input.length < 10;
return isString && isNotEmpty && isLessThanTenChars;
}
function filterProducts(products, minPrice, maxPrice, availableOnly) {
return products.filter(product => {
const isWithinPriceRange = product.price >= minPrice && product.price <= maxPrice;
const isAvailable = availableOnly ? product.stock > 0 : true;
return isWithinPriceRange && isAvailable;
});
}
function isEligibleForDiscount(user) {
const hasPaid = user.orders.some(order => order.status === 'paid');
const hasFrequentOrders = user.orders.length >= 5;
const hasValidCoupon = user.coupons.includes('DISCOUNT2022');
return (hasPaid || hasFrequentOrders) && hasValidCoupon;
}
function isProductOnSale(product) {
const isDiscounted = product.discount > 0;
const hasLowStock = product.stock <= 10;
return isDiscounted || hasLowStock;
}
function getTaskStatus(priority, isComplete) {
const isUrgent = priority === 'high' || priority === 'urgent';
const isOverdue = priority === 'low' && !isComplete;
const isInProgress = priority === 'medium' && !isComplete;
if (isUrgent) {
return 'Urgent';
} else if (isOverdue) {
return 'Overdue';
} else if (isInProgress) {
return 'In Progress';
} else {
return 'Pending';
}
}
![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































