经过我爱模板网进行简单比较,发现,双竖杠||,只要前面的值转为布尔值为false时,就取后面,否则取前面,如undefined、null、false、空字符串和数值0,而双问号则为:前面的值为null、undefined,则取后面的值,否则都取前面的值。由此可以发现,双问号??更加适合在不知道变量是否定义时,或者是否赋值时的场景来使用。
您可以使用下面的代码进行测试:
var a = null; var b = 2; console.log(a || b) // 2 console.log(a ?? b) // 2 var a = undefined; var b = 2; console.log(a || b) // 2 console.log(a ?? b) // 2 var a = ''; var b = 2; console.log(a || b) // 2 console.log(a ?? b) // 空 var a = 0; var b = 2; console.log(a || b) // 2 console.log(a ?? b) // 0 var a = false; var b = 2; console.log(a || b) // 2 console.log(a ?? b) // false var a = 1; var b = 2; console.log(a || b) // 1 console.log(a ?? b) // 1 var a = true; var b = 2; console.log(a || b) // true console.log(a ?? b) // true