1. 質問 1:
http://www.codebaoku.com/question/question-sd-1010000042870944.html
//1、npm安装
npm install @babel/plugin-proposal-optional-chaining // 可选链运算符 ?.
npm install @babel/plugin-proposal-nullish-coalescing-operator // 空值合并运算符 ??
//2、配置babel.config.js
module.exports = {
plugins: [
'@babel/plugin-proposal-optional-chaining', // 可选链运算符 ?.
'@babel/plugin-proposal-nullish-coalescing-operator' // 空值合并运算符 ??
]
}
2. 質問 2:
3. 使用方法:
[1] ヌル合体演算子 (??)
null 或者 undefined
左オペランドが の場合はその右侧
オペランドを返し、それ以外の場合は左オペランドを返す論理演算子。
注: 論理 OR 演算子 (||) とは異なり、論理 OR 演算子は、左側のオペランドが false の場合に右側のオペランドを返します。ただし、 || を使用して特定の変数のデフォルト値を設定すると、予期しない動作が発生する可能性があります。false の場合など ('' または 0)。
const foo = null ?? 'default string';
console.log(foo); // "default string"
const baz = 0 ?? 42;
console.log(baz); // 0
const baz = 0 || 42;
console.log(baz); // 42
[2] オプションのチェーン演算子 (?.)
チェーン内の各参照が有効であることを明示的に検証することなく、接続オブジェクトのチェーンの奥深くにあるプロパティの値を読み取ることができます。?. 演算子の機能は .chain 演算子の機能と似ていますが、参照が null (null または未定義) の場合にエラーが発生せず、この式の短絡戻り値が未定義である点が異なります。関数呼び出しで使用した場合、指定された関数が存在しない場合は、unknown を返します。
const adventurer = {
name: 'Alice',
cat: {
name: 'Dinah'
}
};
const dogName = adventurer.dog?.name;
console.log(dogName); //undefined
console.log(adventurer.someNonExistentMethod?.()); // undefined
console.log(adventurer.someNonExistentMethod.());
// Error: Unexpected token .'('