?.(可选链语法)
代码例子
const test = {
a: undefined,
b: null,
c: 'woshiceshi'
}
console.log("测试?运算符:")
console.log(test?.a, test?.b, test.b, test?.c, test.d, test.d?.a, test.b?.a)
console.log(null?.a, undefined?.b, "fadsf"?.c)
总结
- 在非对象的变量中使用
?.
,就会返回undefined
。
??(双问号语法)
代码例子
const _a0 = undefined ?? '右边';
const _b0 = null ?? '右边';
const _c0 = '左边' ?? '右边';
console.log("测试??运算符:")
console.log(_a0, _b0, _c0)
总结
- 如果在
??
左边是null
或者undefined
的时候,返回右边的结果。
??=
代码例子
const _test = {
_a1: undefined,
_b1: null,
_c1: '左边',
_d1: false,
}
_test._a1 ??= '右边';
_test._b1 ??= '右边';
_test._c1 ??= '右边';
_test._d1 ??= '右边';
console.log("测试??=运算符:")
console.log( _test._a1, _test._b1, _test._c1, _test._d1)
总结
- 注意:在
nodejs v14.17.5
的版本下,使用??=
会报错; ??=
就是当左边是null
或者undefined
的时候,赋值右边的结果。
,
代码例子
const a = (1, 2, 3);
const b = (1, (4, 6));
const c = ((4, 6), 9);
const d1 = () => {
let temp = 1;
return temp++, temp--;
}
const d2 = () => {
let temp = 1;
return temp++, --temp;
}
const d3 = () => {
let temp = 1;
return ++temp, --temp;
}
const e = ((4, 6), 9 + 1);
console.log(a, b, c, d1(), d2(), d3(), e);
总结
,
运算符从左到右依次计算,然后返回,
最右边的结果。