Uso de JS doble signo de interrogación (??) y punto de interrogación (?.)

1. Doble signo de interrogación (??)

valor1 ?? valor2

?? Tome un valor entre valor1 y valor2, solo tome valor2 cuando valor1 sea nulo o indefinido, de lo contrario tome valor1 (0, falso, "" se considera significativo, así que tome valor1)

const obj = {}
console.log(obj.c ?? 'd') // 'd'
console.log(1 ?? "xx")			// 1
console.log(0 ?? "xx") 			// 0
console.log(null ?? "xx") 		// xx
console.log(undefined ?? "xx")  //xx
console.log(-1 ?? "xx") 		// -1
console.log("" ?? "xx") 		// ''

2. Punto de interrogación (?.)

Al acceder a propiedades de objetos multicapa (como res.data.list), si la propiedad res.data está vacía, se informará un error de referencia, por lo que debemos tratarlo de esta manera:

let dataList = res && res.data && res.data.list

Se ve muy feo, la nueva sintaxis introducida hoy es para resolver este problema (¿operador de cadena opcional?).

Con el encadenamiento opcional, puede hacer referencia de manera segura a una propiedad nula o indefinida:

let dataList = res?.data?.list

La función es juzgar si (longitud) bajo (valor) bajo (businessObject) bajo este objeto (this.element) es nulo o indefinido, y devolver indefinido cuando uno de los enlaces es nulo o indefinido, de modo que incluso si hay un atributo faltante en el medio No se informará ningún error, y el valor predeterminado es seguido por el doble signo de interrogación.

Ejemplo 1 :

var obj ={}
console.log(obj ?. a ?. b)	// undefined
console.log(obj ?. a ?. b ?? 88 ) // 88
console.log(obj)	// Object {}
console.log(obj.a)	// undefined
console.log(obj.a.b)	// 报错

Ejemplo 2 :

var obj={a:{b:1}}
console.log(obj.a.b) // 1
console.log(obj ?. a ?. b ?? 66)	// 1
console.log(obj ?. a ?. c ?? 66) // 66
console.log(obj)	// {a:{b:1}}
console.log(obj.a)	// {b:1}

Supongo que te gusta

Origin blog.csdn.net/xijinno1/article/details/132095042
Recomendado
Clasificación