赞
踩
感叹号:强制链式调用
function logFun(p: any): void {
// 真实情况: p.fruite是存在的
console.log('fruit name:', p.fruit!.name); // fruit name: banana
// 真实情况: p是存在的
console.log('dog:', p!.dog); // dog: undefined
// 真实情况: p.dog是不存在的
console.log('dog name:', p.dog!.name); // Cannot read property 'name' of undefined
}
const food = {
fruit: { name: 'banana'}
}
logFun(food);
问号:安全链式调用
function logFun(p: any): void{
// 真实情况: p.fruite是存在的
console.log('fruit name:', p.fruit?.name); // fruit name: banana
// 真实情况: p是存在的
console.log('dog:', p?.dog); // dog: undefined
// 真实情况: p.dog是不存在的,发现不存在返回undefined.
// p.dog?.name 相当于 p.dog && p.dog.name;
console.log('dog name:', p.dog?.name); // dog name: undefined
}
const food = {
fruit: { name: 'banana'}
}
logFun(food);
用途:为空值 指定 默认值
区别:
(function f1(){
let a;
let b = a || '1';
let c = a ?? '1';
console.log(`f1: a=${a}`); // "f1: a=undefined"
console.log(`f1: b=${b} c=${c}`); // "f1: b=1 c=1"
})();
(function f2(){
let a=0;
let b = a || '1';
let c = a ?? '1';
console.log(`f2: a=${a}`); // "f2: a=0"
console.log(`f2: b=${b} c=${c}`); // "f2: b=1 c=0"
})();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。