1. 运算符 || 和 &&
(1)特性1
// 真假判断
const a = false;
const b = true;
if (a || b) {
console.log("a和b中有一个为真"); // 打印
}
if (a && b) {
console.log("a和都为真"); // 不打印
}
/**
注:
1. “||”和“&&”比“|”和“&”效率更高
2. “||”为“双或”,有一个为真时返回真,左边为真时直接返回真,不对右边进行判断
3. “&&”为“双与”,左右都为真时返回真,左边为假时直接返回假,不对右边进行判断
*/
(2)特性2
// 运算符 || 有真值时返回第一个真值,否则返回后一个值
const a = 1 || 0; // 1
const b = 0 || 1; // 1
const c = null || undefined; // undefined
const d = undefined || null; // null
// 需要布尔值时可以做双重否定
const aa = !!a; // true
const cc = !!c; // false
(3)应用
// 1. 赋默认值
function fun(param) {
param = param || 1; // param为假时会param会被赋值为1
}
// 2. 真执行
const param = {age: 22};
param.name && console.log("name = " + param.name); // 不打印
param.age && console.log("age = " + param.age); // age = 22
2.bind、call、apply
const a = {name: 'a'};
const b = {name: 'b'};
function fun() {
console.log(`name = ${this.name}`);
};
// bind 调用后不会立即执行,其返回一个绑定了新this的函数
const funA = fun.bind(a);
const funB = fun.bind(b);
funA(); // name = a
funB(); // name = b
// apply 为函数指定新this并立即调用,接收两个参数,1.新this对象 2.数组参数
// call 与apply相同,第一个参数也相同,其他参数可以传入多个