跳至主要內容

js表达式和运算符

Mr.Dylin...大约 2 分钟2.javaScript

解构赋值【es2015】引入

解构赋值语法是一种 Javascript 表达式。可以将数组中的值或对象的属性取出,赋值给其他变量。

<script>
const [a = 10, b] = [undefined, 2]; // 如果数组中的元素是undefined,则使用默认值
console.log(a); // 输出: 10
console.log(b); // 输出: 2
const nestedObj = {
user: {
  name: 'Bob',
  age: 30
}
};
// 从嵌套的对象中提取数据
const { user: { name: userName, age: userAge } } = nestedObj;
console.log(userName); // 输出: Bob
console.log(userAge);  // 输出: 30
</script>
相等运算符(==!=)和严格相等运算符(===!==
  1. 如果操作数的类型不同,== 运算符会在比较之前尝试将它们转换为相同的类型。
  2. 如果两个操作数都是对象,只有当它们指向同一个对象时才返回 true{}!={}
  3. 两个操作数有任意一个为 NaN,返回 false。NaN不等于NaN。
幂(**)

** )运算符返回第一个操作数取第二个操作数的幂的结果。它等价于 Math.pow()open in new window,不同之处在于,它还接受 BigIntopen in new window 作为操作数。

幂运算符是右结合的:a ** b ** c 等于 a ** (b ** c)

2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
NaN ** 2; // NaN
NaN ** 0; // 1
1 ** Infinity; // NaN

2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64

-(2 ** 2); // -4
(-2) ** 2; // 4

in

如果指定的属性在指定的对象或其原型链中,则 in 运算符返回 true。一般用于对象和数组【数组必须使用索引号,使用数组元素的值会返回false】

in虽然可以用于数组,但是数组最好用【Array.prototype.includes()】。

  • includes 方法用于数组,不适用于对象。
  • includes 检查的是值,而不是键(属性名)。
可选链运算符(?.)

可选链运算符(?. 用于访问对象的属性或调用函数。如果使用此运算符访问的对象或调用的函数是 undefinedopen in new windownullopen in new window,则表达式会短路并计算为 undefinedopen in new window,而不是抛出错误。

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah',
  },
};

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

console.log(adventurer.someNonExistentMethod?.());
// Expected output: undefined
空值合并运算符(??)

空值合并运算符?? )是一个逻辑运算符,当左侧的操作数为 nullopen in new window 或者 undefinedopen in new window 时,返回其右侧操作数,否则返回左侧操作数。

const foo = null ?? 'default string';
console.log(foo);
// Expected output: "default string"

const baz = 0 ?? 42;
console.log(baz);
// Expected output: 0

const a=NaN ?? 2 //结果是NaN
上次编辑于:
贡献者: zddbic