JS基础-运算符

本文介绍了JavaScript中的一些关键运算符,包括空置合并运算符(??)用于处理null或undefined的情况,三元运算符作为if...else的简洁形式,逻辑空赋值(??=)用于默认赋值,可选链运算符(?.)安全地访问深层属性,以及属性访问器点号和方括号的不同用法。此外,还提到了取余数和展开语法的应用。
摘要由CSDN通过智能技术生成

1.空置合并运算符 (??)

左边值为 null  或者 undefined  ,返回右边结果值,否则取反

例:

const foo = null ?? 'default string';
结果是:default string

const baz = 0 ?? 42;
结果: 0

2. 三元运算符:JavaScript 唯一使用三个操作数的运算符

条件后 跟一个问号(?),如果条件为真,执行冒号前的表达式;条件为假,执行冒号后的表达式。是if...else语句的简捷形式。

语法:
condition ? exprIfTrue : exprIfFalse(等于false或者可以转换为false的值)
描述::
除了false,可能的假值表达式还有:null / NaN  / 0 / (空字符串)"" / undefined

例子:
1.常见的处理null值方法
const greeting = (person) => {
  const name = person ? person.name : "stranger";
  return `Howdy, ${name}`;
}
console.log(greeting({ name: "Alice" }));  // "Howdy, Alice"
console.log(greeting(null));             // "Howdy, stranger"

2.三元运算符是右结合,可以像if...else if...else if...else结合起来使用
function example() {
  return condition1 ? value1
        : condition2 ? value2
        : condition3 ? value3
        : value4;
}
等价于:
function example() {
  if (condition1) {
    return value1;
  } else if (condition2) {
    return value2;
  } else if (condition3) {
    return value3;
  } else {
    return value4;
  }
}

3.逻辑空赋值 (??=)

被判断的参数为空值(null 或者 undefined)时对其赋值

const a = { duration: 50 };

a.duration ??= 10;
console.log(a.duration);
结果: 50

a.speed ??= 25;
console.log(a.speed);
结果: 25

4.可选链运算符 (?.)

可读取对项链深处的属性值,不必验证链中的每个引用是否有效。

?. 类似于 链式运算符(.),但是它可以在值或者函数为null 或 undefined 时不报错,返回undefined

语法:
obj.val?.prop
obj.val?.[expr]
obj.func?.(args)
例子:
const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const dogName = adventurer.dog?.name;
console.log(dogName);
//结果: undefined

console.log(adventurer.someNonExistentMethod?.());
// 结果: undefined

5.属性访问器

有两种,点号(.) 或者 方括号([ ])

const person1 = {};
person1['firstname'] = 'Mario';
person1['lastname'] = 'Rossi';
console.log(person1.firstname);
结果: "Mario"

const person2 = {
  firstname: 'John',
  lastname: 'Doe'
};
console.log(person2['lastname']);
结果: "Doe"

6. 取余数 (%)

结果是:左侧除以右侧 的余数,值的结果符号与左侧(被除数)正负保持一致

console.log(13 % 5);
结果: 3
console.log(-13 % 5);
结果: -3
console.log(4 % 2);
结果: 0
console.log(-4 % 2);
结果: -0

7. 取余数并赋值 (%=)

变量除以右侧数,将余数赋值给该变量

语法:x %= y 等价于  x = x % y
let bar = 5;

bar %= 2; // 1
bar %= 'foo'; // NaN
bar %= 0; // NaN

8.展开语法(....)

在函数调用或者数组构造是,可将数据或者string,以及字面量对象进行展开。

字面量一般指 [1, 2, 3] 或者 {name: "mdn"} 这种简洁的构造方式

//语法:
函数调用:myFunction(...iterableObj);
字面量数组构造或字符串:[...iterableObj, '4', ...'hello', 6];
字面量对象拷贝:let objClone = { ...obj };
例子:
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);

或者:
function myFunction(v, w, x, y, z) { }
var args = [0, 1];
myFunction(-1, ...args, 2, ...[3]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值