网站建设环境软件有哪些,wordpress免费手机模板,天河高端网站建设,网页设计背景制作短路求值#xff08;short-circuit evaluation#xff09;是指在逻辑运算中#xff0c;如果前面的表达式已经能够确定整个表达式的结果#xff0c;后面的表达式就不会被执行。短路求值常见于逻辑运算符 #xff08;与#xff09;和 ||#xff08;或#xff0…短路求值short-circuit evaluation是指在逻辑运算中如果前面的表达式已经能够确定整个表达式的结果后面的表达式就不会被执行。短路求值常见于逻辑运算符 与和 ||或中。
下面是几个关于短路求值的例子
1. 逻辑与的短路求值 表达式会在第一个操作数为 false 时停止计算因为无论第二个操作数是什么结果都一定是 false。
// 示例 1前面的表达式为 false后面的表达式不会执行
const a 0;
const result1 a (10 / a); // 0
console.log(result1); // 输出 0因为 a 为 0整个表达式短路10 / a 不会被执行// 示例 2前面的表达式为 true继续执行后面的表达式
const b 5;
const result2 b (b 10); // 15
console.log(result2); // 输出 15因为 b 为 5所以继续执行 b 102. ||逻辑或的短路求值
|| 表达式会在第一个操作数为 true 时停止计算因为无论第二个操作数是什么结果都一定是 true。
// 示例 1前面的表达式为 true后面的表达式不会执行
const c 5;
const result3 c || (10 / c); // 5
console.log(result3); // 输出 5因为 c 为 5true整个表达式短路10 / c 不会被执行// 示例 2前面的表达式为 false继续执行后面的表达式
const d 0;
const result4 d || (d 10); // 10
console.log(result4); // 输出 10因为 d 为 0false所以继续执行 d 103. 结合对象展开的例子
可以利用短路求值来有条件地向对象中添加属性
const addAge true;
const person {name: Alice,...(addAge { age: 25 })
};
console.log(person); // 输出 { name: Alice, age: 25 }const addAge2 false;
const person2 {name: Bob,...(addAge2 { age: 30 })
};
console.log(person2); // 输出 { name: Bob }4. 函数调用中的短路求值
短路求值还可以用于控制函数是否执行
function greet() {console.log(Hello, world!);
}// 当 condition 为 true 时调用函数
const condition true;
condition greet(); // 输出 Hello, world!// 当 condition 为 false 时不调用函数
const condition2 false;
condition2 greet(); // 不会输出任何东西5. 设置默认值
可以用短路求值来设置默认值
const inputValue null;
const defaultValue 默认值;
const result5 inputValue || defaultValue;
console.log(result5); // 输出 默认值如果 inputValue 是 null、undefined、0、false 或 那么 result5 会使用 defaultValue 作为默认值。