现实开发中,经常会有判断变量是否被定义的需求,然后根据它进行相应的操作:letvisitor1Kylinconsole。log(visitor1??访客)Kylinletvisitor2console。log(visitor2??访客)访客 如您所见,代码中??就是空值合并运算符。它所表达的意思是,当一个值既不是null也不是undefined时,就将其称为已定义的。例如:a??b的结果:如果a是已定义的,结果就为a,如果a不是已定义的,结果就为b。 空值合并也支持从一些列值中选出第一个非nullundefined的值:letfirstNamenullletlastNamenullconsole。log(firstName??lastName??访客)访客 ??运算符与运算符有些区别,运算符返回的是第一个真值,而??运算符返回的是第一个已定义的值。 这说明运算符无法区分0,false,,null,undefined:letwidth0console。log(width100)100letwidth0console。log(width??100)0 JavaScript禁止??与和混用,除非用括号明确提升它们的优先级,否则会出现语法错误。