美文网首页
逻辑运算符短路

逻辑运算符短路

作者: 沸腾Shark | 来源:发表于2020-06-11 15:49 被阅读0次

逻辑运算符短路的目的是为了优化执行

逻辑运算符: && || !
它们将按顺序将左侧的值转换为布尔类型,以决定做什么,在根据运算符及转换结果,返回原始的左侧值或右侧值

||的运算规则

  1. II运算符的左侧值为true,则直接返回左侧值;
  2. ||运算符的左侧值为false,则直接返回右侧值。
console.log(null || "user");
// 返回 user

console.log("Agnes" || "user");
//返回Agnes
  1. 将字符串和数字转换为布尔值的规则规定:0NaNundefined空字符串("")计为false;其他所有值都即为true。特别注意对象函数、类等true
  2. 执行优化:如果左侧的表达式为true,则直接返回左侧值,不执行右侧表达式;
0 || -1  
// 返回-1

"" || "!?"
// 返回!?

undefined || 3
// 返回3

const c = (() => undefined) || (() =>  1);
const d = c();
d;
// 返回undefined,因为对象是`true`,故c = () => undefined;

&&的运算规则(与||正好相反)

  1. &&运算符左侧值转换为true,则直接返回右侧的值;
  2. &&运算符左侧值转换为false,则直接返回左侧的值;
  3. 将字符串和数字转换为布尔值的规则规定:0NaNundefined空字符串("")计为false;其他所有值都即为true,特别注意对象函数、类等true
  4. 执行优化: 如果左侧的表达式为false,则不会再执行右侧的表达式;
0 && -1  
// 返回0

"" && "!?"
// 返回""

undefined && 3
// 返回 undefined

const c = (() => undefined) && (() =>  1);
const d = c();
d;
// 返回1,因为对象是`true`,故c = () => 1;

相关文章

网友评论

      本文标题:逻辑运算符短路

      本文链接:https://www.haomeiwen.com/subject/zwwytktx.html