const student = {
score: {
math: 98
}
};
if (student && student.score) {
console.log(student.score.math);
}
console.log(student?.score?.math); // 98
const Student = ({ getScore }: { getScore?: () => void }) => {
useEffect(() => {
getScore?.(); // 自动跳过undefined的情况
}, []);
return <div></div>;
};
const arr = [10, 20];
console.log(arr?.[1]); // 20
// 复杂结构中的组合使用
const student = {
score: {
math: [
98,
67,
() => {
return 99;
}
]
}
};
console.log(student?.score?.math?.[2]?.()); // 99
arr?.[1] = 2; // 抛出SyntaxError
document.querySelector('.score')?.innerhtml = '98'; // 语法错误
const getScore = (score: number) => {
return score || 1; // 当score为0时返回1,这不符合业务逻辑
};
console.log(getScore(0)); // 1
const getScore = (score: number) => {
return score ?? 1; // 仅当score为null/undefined时返回1
};
console.log(getScore(0)); // 0
console.log(getScore(undefined)); // 1
let userScore;
userScore ??= 100; // 等同于 userScore = userScore ?? 100
console.log(userScore); // 100
// 传统写法
score = score || 1;
age = age && 24;
// 新写法
score ||= 1; // 等价于 score = score || 1
age &&= 24; // 等价于 age = age && 24
let config = {};
config.apiUrl ||= 'https://api.example.com';
config.timeout &&= 5000;
console.log(2 ** 10); // 1024,等价于Math.pow(2, 10)
console.log(3 ** 3); // 27
// 支持负数指数
console.log(4 ** -2); // 0.0625,等价于1/(4*4)
npm install @babel/plugin-proposal-optional-chaining @babel/plugin-proposal-nullish-coalescing-operator
{
"plugins": ["@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-nullish-coalescing-operator"]
}
... 运算符, 是ES6里一个新引入的运算法, 也叫展开/收集 运算符, 我们每天都要和它打交道。这篇文章,我就带你系统的回顾下这个运算符, 介绍一些基础和进阶的用法。
JavaScript是一门了不起的语言。我喜欢它的灵活性:只需以你喜欢的方式做事:更改变量类型,动态的向对象添加方法或属性,对不同的变量类型使用运算符等等。然而动态是要付出代价的,开发人员需要知道怎样处理对于不同操作符的类型转换
TypeScript 2.1 增加了对 对象扩展运算和 rest 属性提案的支持,该提案在 ES2018 中标准化。可以以类型安全的方式使用 rest 和 spread 属性。对象 rest 属性假设已经定义了一个具有三个属性的简单字面量对象
我们可以使用展开操作符复制数组,不过要注意的是这是一个浅拷贝。这样我们就可以复制一个基本的数组,注意,它不适用于多级数组或带有日期或函数的数组。
JS 里的操作符大家每天都在使用,还有一些 ES2020、ES2021 新加的实用操作符,这些共同构成了 JS 灵活的语法生态
你有没有花一个下午的时间浏览过 Mozilla 文档?如果你有,你会很清楚网上有很多关于 JavaScript 的信息。这使得人们很容易忽略一些不同寻常的 JavaScript 操作符。
扩展运算符( spread )是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。array.push(...items)和add(...numbers)这两行,都是函数的调用,它们的都使用了扩展运算符。该运算符将一个数组,变为参数序列。
JavaScript使用符号三个点(...)作为剩余运算符和展开运算符,不过这两个运算符是有区别的。最主要的区别就是,剩余运算符将用户提供的某些特定值的其余部分放入JavaScript数组中
首先,如果是嵌套写法的话,简单的嵌套还好,但是当嵌套变得很深的时候就有点难以阅读了。嵌套的执行流程是从右到左移动的,而不是我们正常阅读代码从左到右的方向
很多人都对双竖杠||非常熟悉,因为这个经常在项目中经常会用到。单竖杠|,却很少在项目开发中使用到。|是位运算符,||是逻辑运算符。平常,经常使用以下这个几个方法对数字进行处理。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!