JavaScript学习-逻辑运算符-短路了?

367 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

前文我们学习了JavaScript 中的 [JavaScript 学习-特殊符号-位运算符], 本文来学习 JavaScript 逻辑运算符

JavaScript 中的逻辑运算符

逻辑运算符-MDN文档:

逻辑运算符的短路情况

逻辑运算符 &&||, 是一种以特殊方式处理不同类型的值的运算符.

它们首先会将左侧的值转换为 布尔类型, 然后通过这个 布尔类型 来进行下一步的处理: 即运算符右侧的值. 然后根据运算符类型和转换的布尔类型结果进行最后的结果的返回: 左侧值 或者 右侧值.

  • 当运算符 逻辑或 ||的左侧的值能转换为 true, 那么它就将直接返回, 而不顾后面的"兄弟"了, 否则将返回右侧的值.
console.log(false || "这是一个字符串为幻真, 将被返回") // 返回后面的字符串
// ==> 这是一个字符串为幻真, 将被返回

console.log("我是第一个字符串" || "我是第二个字符串, 将被忽略, 不被返回...") // 返回第一个字符串
// ==> 我是第一个字符串

console.log(typeof("字符串1" || "字符串2")) 
// ==> string    返回的是字符串, 一直以为返回的是 布尔值呢....

通过上面的代码, 我们可以灵活运用: 可以使用这个功能作为返回默认值的方法.

如果一个值可能为 空, 那么可以使用一个 ||, 再跟上一个默认可以替换的值, 以防报错 undefined

逻辑运算符与 &&

逻辑运算符与 && 的工作方式与 || 类似, 但是返回的结果是相反的! 当&&左侧的值转换为 false 时就直接返回了左侧的值. 否则返回右侧的值.

从 || 和 && 中的道理

就是先判断当前环境, 只有在有必要的时候才进行下一步的判断操作(计算右侧的部分)..