1.?. (operador de cadeia opcional)
Em JavaScript, "?." é um novo operador chamado "Encadeamento Opcional". Permite-nos evitar erros ao aceder a uma propriedade que pode ser nula ou indefinida ou ao chamar um método que pode não existir.
Use o ?.operator para acessar com segurança as propriedades e métodos de um objeto sem causar um erro e fazer com que o programa interrompa a execução. Quando a propriedade ou método do objeto não existe, a expressão retorna indefinido em vez de lançar uma exceção TypeError.
1.1 Acessar propriedades do objeto
const person = {
name: 'John',
address: {
city: 'New York'
}
};
console.log(person.address?.city); // 输出:'New York'
// 输出:undefined,因为person对象没有age属性
console.log(person.age?.toString());
1.2 Chamando métodos de objeto
const calculator = {
add: function(a, b) {
return a + b;
}
};
console.log(calculator.add?.(2, 3)); // 输出:5
// 输出:undefined,因为calculator对象没有subtract方法
console.log(calculator.subtract?.(5, 2));
1.3 Uso da cadeia?.
const user = {
profile: {
name: 'Alice',
email: '[email protected]'
}
};
console.log(user?.profile?.name); // 输出:'Alice'
// 输出:undefined,因为user对象没有address属性
console.log(user?.address?.city);
Precauções:
- Ao usar o operador ?., se a propriedade ou método de destino existir e puder ser chamado, eles serão executados normalmente.
- Se o destino for nulo ou indefinido, a expressão retornará indefinido imediatamente e nenhuma outra tentativa será feita para acessar propriedades ou métodos subsequentes.
- O operador não pode ser usado com [] (colchetes). Por exemplo: obj?.[index] é uma sintaxe inválida.
2. ?? (operador de coalescência de valor nulo)
Em JavaScript, "??" é o uso do operador de coalescência de valor nulo. É usado para determinar se uma expressão é nula ou indefinida e retorna um valor padrão.
const name = null;
/*
使用??运算符来判断name的值是否为空,如果为空,则赋予默认值"Unknown"
*/
const displayName = name ?? "Unknown";
console.log(displayName); // 输出: Unknown
/*
经常在表格或者数据渲染时可以用到,当表格数据为空时,直接显示 -
const data = null?? '-'
*/