空合并运算符:??空合并运算符(??)是一个逻辑运算符,当左边的操作数为==null==或==undefined==时,返回右操作数,否则返回左操作数。JavaScript中的真值和假值之前我们先看一下??运算符,让我们回想一下JavaScript的值要么是true要么是false:false。在JavaScript中,以下值被认为是假值:false0-00nNaN""nullundefined其余值在转换为布尔值时为真并被认为是真值。使用??提供默认值当值为null或未定义时,??运算符可以提供默认值。它需要两个操作数:值??回退值;如果左操作的结果为null或未定义,则??表达式将使用正确操作的结果null??"n/a";//"n/a"未定义??"n/a";//"n/a"如果左操作不为null或undefined,则使用左操作false??真;//假0??100;//0NaN??0;//NaN或更多左操作数全部为“假”,但是??仍然得到左操作数。如果我们使用||(逻辑OR运算符)而不是??,以上所有表达式都将使用右操作数。假||真;//真0||100;//100南??0;//大于0的结果差异是你不能使用||的原因为可空值提供默认值。结果可能不是我们想要的。typeOptions={prettyPrint?:boolean;}functionserializeJSON(value:unknown,options:Options):string{constprettyPrint=options.prettyPrint??真的;//...}表达式options.perttyPrint??true在perttyPrint的值为null或undefined时,提供默认值true。如果perttyPrint的值为false,即false??true,结果为false,这就是我们想要的结果。如果??这里换成了||,结果不是我们预期的。当perttyPrint的值为null或undefined时,最终的表达式结果为true,符合预期。如果perttyPrint的值为false,则为false||true仍然为true,这不是我们想要的。所以在这种情况下,你必须使用??。
