Uso de ponto de interrogação duplo JS (??) e ponto de interrogação (?.)

1. Ponto de interrogação duplo (??)

valor1 ?? valor2

?? Pega um valor entre valor1 e valor2, só pega valor2 quando valor1 é nulo ou indefinido, senão pega valor1 (0, falso, "" é considerado significativo, então pega 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. Ponto de interrogação (?.)

Ao acessar propriedades de objetos multicamadas (como res.data.list), se a propriedade res.data estiver vazia, um erro de referência será relatado, então temos que lidar com isso da seguinte forma:

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

Parece muito feio, a nova sintaxe introduzida hoje é para resolver esse problema (operador de cadeia opcional?.)

Com encadeamento opcional, você pode referenciar com segurança uma propriedade nula ou indefinida:

deixe dataList = res?.data?.list

A função é julgar se (comprimento) sob (valor) sob (businessObject) sob este objeto (this.element) é nulo ou indefinido, e retornar indefinido quando um dos links for nulo ou indefinido, para que mesmo que haja um atributo ausente no meio Nenhum erro será relatado e o valor padrão é seguido por um ponto de interrogação duplo.

Exemplo 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)	// 报错

Exemplo 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}

Acho que você gosta

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