【发布时间】:2021-05-17 17:10:59
【问题描述】:
我很好奇 null 合并运算符 ?? 在默认 create-react-app 设置中是否有一个 polyfill。事实证明确实如此:
const App = () => {
const foo = 'custom value';
return (
<div>
{foo ?? 'default value'}
</div>
);
};
变成:
const App = () => {
const foo = 'custom value';
return /*#__PURE__*/Object(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__["jsxDEV"])("div", {
children: foo !== null && foo !== void 0 ? foo : 'default value'
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 7,
columnNumber: 9
}, undefined);
};
最有趣的部分是foo !== null && foo !== void 0 ? foo : 'default value',它是?? 操作符的polyfill。虽然foo !== null 很明显,但我不太明白foo !== void 0 部分。什么意思?
我查了一下,void 0 === undefined 是true,但为什么不是简单的foo !== undefined?
【问题讨论】:
标签: javascript reactjs null-coalescing-operator