Bootstrap

ES6中js的运算符( ?. ?? )


一、JS 逻辑运算符 (也叫短路运算)

js中为我们提供了三种逻辑运算符: 或 || 与 && 非 ! 。这三个都是针对布尔值进行的,如果不是布尔类型,则需要将他转换为布尔类型,然后在进行相应的运算。

如果一个值可以被转换为true,那么这个值就是所谓的 truthy,如果可以被转换为false,那么这个值就是所谓的falsy
尽管 && || 运算符能够使用非布尔值的操作数,但它们依然可以被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值,如果要显式地将它们的返回值或者表达式转换为布尔值,可以使用双重非运算符即 !! 或者 Boolean() 构造函数

🔔🔔 JS中的6个假 :0、""、null、false、undefined、NaN都会判为false,其它都为true


🌟 1、逻辑或 ||

||OR ,逻辑或, expr1 || expr2 ,若 expr1 可转换为 true 则返回 expr1 ,否则返回 expr2

可以对符号两侧的数据进行 或 运算。当两个数据都为false时,才会返回false;当两个数据中有一个为true时,就会返回一个true。
js中的 "或"短路或,即当两个数据中,只要第一个为true,就不会看第二个数;但当第一个为false时,就需要看第二个值,才能知道结果。

只要 || 前面为 false,不管 || 后面是 true 还是 false,都返回 || 后面的值
只要 || 前面为 true , 不管 || 后面是 true 还是 false,都返回 || 前面的值


总结:真前假后    === >    一真则真

// 逻辑 或 示例
console.log(true || true);   // 结果: true (第1个为true, 则返回第1个值)
console.log(false || true);  // 结果: true (第1个为false, 则返回第2个值)
console.log(true || false);  // 结果: true (第1个为true, 则返回第1个值)
console.log(false || (3 === 4));  // 结果: false (第1个为false, 则返回第2个值, 而 3 === 4 为false)

console.log("Cat" || "Dog");  // 结果: "Cat" (第1个为true, 则返回第1个值)
console.log(false || "Dog");  // 结果: "Dog" (第1个为false, 则返回第2个值)
console.log("Cat" || false);  // 结果: "Cat" (第1个为true, 则返回第1个值)

console.log("" || false);  // 结果: false (第1个为false, 则返回第2个值)
console.log(false || "");  // 结果: "" (第1个为false, 则返回第2个值)

✳️ 寻找第一个 truthy 的值
|| 逻辑运算符的一个很重要的用法就是寻找第一个 truthy 的值,这个操作的使用频率非常高,通常用来赋值默认值。

// 寻找第一个 truthy 的值
let val0 = 0, val1 = 1, val2 = 2;
let result = val0 || val1 || val2;
console.log(result); // 结果: 1

// 设定默认值
let v1 = 0;
let result_default = v1 || 1;
console.log(result_default); // 结果: 1

🌟 2、逻辑与 &&

&&AND ,逻辑与, expr1 && expr2 ,若 expr1 && expr2 可转换为 true 则返回 expr2 ,否则返回 expr1

可以对符号两侧的数据进行 与 运算。当两个数据都为true时,则会返回true;只要有一个为false,则就会返回一个false。
js中的 "与"短路与,两个数据中 当第一个数据为false时,就不会就看第二个值,当第一个数据为true时,则需要看第二个数据才能知道结果。

只要 && 前面为 false,不管 && 后面是 true 还是 false,都返回 && 前面的值
只要 && 前面为 true , 不管 && 后面是 true 还是 false,都返回 && 后面的值


总结:假前真后    === >    一假则假

// 逻辑 与 示例
console.log(true && true);   // 结果: true (第1个为true, 则返回第2个值)
console.log(false && true);  // 结果: false (第1个为false, 则返回第1个值)
console.log(true && false);  // 结果: false (第1个为true, 则返回第2个值)
console.log(false && (3 === 4));  // 结果: false (第1个为false, 则返回第1个值)

console.log("Cat" && "Dog");  // 结果: "Dog" (第1个为true, 则返回第2个值)
console.log(false && "Dog");  // 结果: false (第1个为false, 则返回第1个值)
console.log("Cat" && false);  // 结果: false (第1个为true, 则返回第2个值)

console.log("" && false);  // 结果: "" (第1个为false, 则返回第1个值)
con
;