首页 > 建站教程 > JS、jQ、TS >  js中,双问号??和双竖杠||的简单比较区别正文

js中,双问号??和双竖杠||的简单比较区别

    js中,双问号??和双竖杠||的区别:它们的共同特点是语法一样,前面是值,后面也是值,中间是符号;都是根据前面的值来决定到底取前面还是取后面。
    经过我爱模板网进行简单比较,发现,双竖杠||,只要前面的值转为布尔值为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